MySQL 準同期レプリケーション(Semisynchronous Replication)設定メモ
========== サーバ構成 ==========
・マスター
IPアドレス:10.1.1.122
・スレーブ
IPアドレス:10.1.1.123
・使用したMySQLのバージョン
mysql -V
------------------------------
mysql Ver 14.14 Distrib 5.5.25a, for Linux (x86_64) using readline 5.1
------------------------------
========== マスターの設定(10.1.1.122) ==========
・レプリケーションユーザの作成
mysql -u root -p
---(下記を実行)------------------------
mysql> GRANT REPLICATION SLAVE ON *.* TO 'slave'@'10.1.1.123' IDENTIFIED BY '<パスワード>';
mysql> FLUSH PRIVILEGES;
---------------------------
・MySQLマスター用の設定
vi /etc/my.cnf
---(下記を追加)---------------------------
[mysqld]
(略)
# サーバIDの設定
server-id=1
# バイナリログの有効化
sync_binlog=1
log-bin=mysql-bin
# 準同期レプリケーション用のプラグインを有効化
plugin-load=rpl_semi_sync_master=semisync_master.so
# 準同期レプリケーションの有効化
rpl_semi_sync_master_enabled=1
# スレーブが応答しない場合のタイムアウトの設定(単位はms)
rpl_semi_sync_master_timeout=10
------------------------------
・MySQLを再起動
service mysqld restart
・マスターDBのダンプ
mysqldump -u root -p \
--all-databases \
--single-transaction \
--flush-logs \
--master-data=2 \
--hex-blob \
--default-character-set=utf8 > dump.sql
・上記でダンプした「dump.sql」をスレーブサーバへコピーします。
scp dump.sql 10.1.1.123:
========== スレーブの設定(10.1.1.122) ==========
・MySQLスレーブ用の設定
vi /etc/my.cnf
---(下記を追加)---------------------------
[mysqld]
(略)
# サーバIDの設定
server-id=2
# バイナリログの有効化
sync_binlog=1
log-bin=mysql-bin
# 準同期レプリケーション用のプラグインを有効
plugin-load=rpl_semi_sync_master=semisync_master.so
# 準同期レプリケーションの有効化
rpl_semi_sync_master_enabled=1
# 更新禁止設定
read_only
------------------------------
・マスターDBをコピーします
mysql -u root -p < dump.sql
・MySQLを再起動
service mysqld restart
・ダンプした時点のマスターのバイナリログファイルと開始位置を確認
head -n 100 dump.sql | grep CHANGE
------------------------------
-- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000013', MASTER_LOG_POS=107;
------------------------------
・レプリケーション設定
mysql -u root -p
---(下記を実行)---------------------------
CHANGE MASTER TO
MASTER_HOST='10.1.1.122',
MASTER_PORT=3306,
MASTER_USER='slave',
MASTER_PASSWORD='<パスワード>',
MASTER_LOG_FILE='mysql-bin.000013',
MASTER_LOG_POS=107;
\q
------------------------------
・マスター情報のファイルが作成されます
cat /var/lib/mysql/master.info
・レプリケーションを開始します
mysql -u root -p
---(下記を実行)---------------------------
START SLAVE;
------------------------------
・スレーブの状態を確認します
mysql -u root -p
---(下記を実行)---------------------------
SHOW SLAVE STATUS\G
------------------------------
---(下記表示があればOK)---------------------------
(略)
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
(略)
------------------------------
以上で準同期レプリケーション完了です。
・マスター
IPアドレス:10.1.1.122
・スレーブ
IPアドレス:10.1.1.123
・使用したMySQLのバージョン
mysql -V
------------------------------
mysql Ver 14.14 Distrib 5.5.25a, for Linux (x86_64) using readline 5.1
------------------------------
========== マスターの設定(10.1.1.122) ==========
・レプリケーションユーザの作成
mysql -u root -p
---(下記を実行)------------------------
mysql> GRANT REPLICATION SLAVE ON *.* TO 'slave'@'10.1.1.123' IDENTIFIED BY '<パスワード>';
mysql> FLUSH PRIVILEGES;
---------------------------
・MySQLマスター用の設定
vi /etc/my.cnf
---(下記を追加)---------------------------
[mysqld]
(略)
# サーバIDの設定
server-id=1
# バイナリログの有効化
sync_binlog=1
log-bin=mysql-bin
# 準同期レプリケーション用のプラグインを有効化
plugin-load=rpl_semi_sync_master=semisync_master.so
# 準同期レプリケーションの有効化
rpl_semi_sync_master_enabled=1
# スレーブが応答しない場合のタイムアウトの設定(単位はms)
rpl_semi_sync_master_timeout=10
------------------------------
・MySQLを再起動
service mysqld restart
・マスターDBのダンプ
mysqldump -u root -p \
--all-databases \
--single-transaction \
--flush-logs \
--master-data=2 \
--hex-blob \
--default-character-set=utf8 > dump.sql
・上記でダンプした「dump.sql」をスレーブサーバへコピーします。
scp dump.sql 10.1.1.123:
========== スレーブの設定(10.1.1.122) ==========
・MySQLスレーブ用の設定
vi /etc/my.cnf
---(下記を追加)---------------------------
[mysqld]
(略)
# サーバIDの設定
server-id=2
# バイナリログの有効化
sync_binlog=1
log-bin=mysql-bin
# 準同期レプリケーション用のプラグインを有効
plugin-load=rpl_semi_sync_master=semisync_master.so
# 準同期レプリケーションの有効化
rpl_semi_sync_master_enabled=1
# 更新禁止設定
read_only
------------------------------
・マスターDBをコピーします
mysql -u root -p < dump.sql
・MySQLを再起動
service mysqld restart
・ダンプした時点のマスターのバイナリログファイルと開始位置を確認
head -n 100 dump.sql | grep CHANGE
------------------------------
-- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000013', MASTER_LOG_POS=107;
------------------------------
・レプリケーション設定
mysql -u root -p
---(下記を実行)---------------------------
CHANGE MASTER TO
MASTER_HOST='10.1.1.122',
MASTER_PORT=3306,
MASTER_USER='slave',
MASTER_PASSWORD='<パスワード>',
MASTER_LOG_FILE='mysql-bin.000013',
MASTER_LOG_POS=107;
\q
------------------------------
・マスター情報のファイルが作成されます
cat /var/lib/mysql/master.info
・レプリケーションを開始します
mysql -u root -p
---(下記を実行)---------------------------
START SLAVE;
------------------------------
・スレーブの状態を確認します
mysql -u root -p
---(下記を実行)---------------------------
SHOW SLAVE STATUS\G
------------------------------
---(下記表示があればOK)---------------------------
(略)
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
(略)
------------------------------
以上で準同期レプリケーション完了です。
09
« 【検証】MySQL 準同期レプリケーション(Semisynchronous Replication) | 書籍「リーダブルコード」 »
コメント
Comment
list
コメントの投稿
Comment
form
トラックバック
トラックバックURL
→http://arpanet617.blog.fc2.com/tb.php/30-5af8743e
この記事にトラックバックする(FC2ブログユーザー)
Trackback
list
| h o m e |