Posted at

MySQL5.6でGTIDを使ったレプリケーション設定

More than 3 years have passed since last update.


環境

項目

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と同じになっていること