環境
項目 | |
---|---|
OS | Red Hat Enterprise Linux Server release 6.5 |
DB | MySQL 5.6.25 |
記載の背景
- GTIDを利用したレプリケーション設定について公式サイトを見たがよくわからなかった。
- GTIDを利用したレプリケーション設定についてググっみたが情報が錯綜しているように感じた。
- とりあえず動くようにするための最低限の設定がわかれば嬉しい人もいるはず。
想定
- MySQL5.6のインストールされたVMが1台ある。GTIDの設定はしていない。
- VMをクローンしてslave用のVMを作成した。IPアドレスなど基本的な設定は完了済み。
- master、slaveともに初期状態ではMySQLは停止している。
手順
masterとslaveのmy.cnfに以下を記載
以下を[mysqld]のセクションに追記する
server-id = 1
gtid-mode=ON
enforce-gtid-consistency
log-bin=mysql-bin
log-slave-updates
server-idはユニークにすること。
masterは1,slaveは2とか。
masterでdumpする
mysqldump -u<USER> -p<PASSWORD> --all-databases --single-transaction --master-data=2 >master_dump.sql
オプションの解説
- --single-transaction
ダンプする際に先頭にBEGINをつけるため、ダンプ時のデータのトランザクションの一貫性を保つことができます。ただしInnoDBなどのトランザクションが有効なストレージエンジンではないと意味がないです。
- --master-data
CHANGE MASTER TOコマンドをダンプの先頭に付加します。--master-data=2を指定するとCHANGE MASTER TOがコメントアウトされた状態になります。--maser-data=1と指定するとコメントアウトされずにダンプされます。
引用元:http://oinume.hatenablog.com/entry/wp/292
slaveでmysqlを起動
service mysql start
mysql -u<USER> -p<PASSWORD> < master_dump.sql
chenge masterコマンド
mysql> change master to
-> master_host = '<MASTER HOST>',
-> master_port=3306,
-> master_user='<USER>',
-> master_password='<PASSWORD>',
-> master_auto_position=1;
start slaveコマンド
mysql> start slave;
slaveが動いているか確認
masterにて
mysql> show master status\G
File: mysql-bin.000001
Position: 231003
Binlog_Do_DB:
Binlog_Ignore_DB:
Executed_Gtid_Set: 22acmsdt4-3b50-11e5-904c-005056ba46c2:1-32
slaveにて
以下を確認
mysql> show slave status\G
Slave_IO_Running: Yes <----Yesになっていること
Slave_SQL_Running: Yes <----Yesになっていること
Master_Log_File: mysql-bin.000001 <---masterと同じになっていること
Read_Master_Log_Pos: 231003 <---masterと同じになっていること
Executed_Gtid_Set: 22acmsdt4-3b50-11e5-904c-005056ba46c2:1-32 <---masterと同じになっていること