前に書いた MySQL Replication の焼き直しです。
バージョンを5.6で揃えることになったので、他のバージョンとの差異を気にする必要がない、はず。
- [マスター・スレーブ]
それぞれ作る。
mysql.comにリポジトリがあるので、これを使用する。 - [マスター・スレーブ]
vi /etc/my.cnf
で、以下を書き足す or コメントアウトを外す。
server-idは重複しないよう気をつける。
(第2オクテット~第4オクテットの9桁で被らないと思っている)[mysqld] log-bin=mysql-bin server-id=168001012
- [マスター]
スレーブから接続するユーザを作成しておく。GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.1.0/255.255.255.0' IDENTIFIED BY 'repl_password';
- [マスター]
ダンプ出力する。mysqldump -u root -p --all-databases --master-data --apply-slave-statements >> /tmp/sqldump_all_databases.sql
[ –single-transaction ]がないと、
始めのデータベースと最後のデータベースでダンプしてる間に更新されている場合が出てきたりするかも。
でも、[ –master-data ]で、[ –lock-all-tables ]が自動的に追加されるからそれでイイのかな?[ –opt ]
※–opt はデフォルトでONなので、明示的に書く必要はない。
自動的にセットされるオプション・・・- –add-drop-table
- –add-locks
- –create-options
- –disable-keys
- –extended-insert
- –lock-tables
- –quick
- –set-charset
[ –all-databases ]
全てのデータベースを出力。[ –master-data ]
ダンプファイルの先頭に「CHANGE MASTER TO…」を書き込む。
自動的にセットされるオプション・・・
(ただし、[ –single-transaction ]オプションが指定されている場合を除く)自動的に解除されるオプション・・・
[ –apply-slave-statements ]
ダンプファイルの先頭、「CHANGE MASTER TO…」文より前に「STOP SLAVE;」、
末尾に「START SLAVE;」を書き込む。 - [スレーブ]
マスターにあるダンプファイルを取得。scp -Cqp user@192.168.1.12:/tmp/sqldump_all_databases.sql /tmp/sqldump_all_databases.sql
- [スレーブ]
[ –master-data ]オプションをつけていれば、「CHANGE MASTER TO…」文も同時にやってくれているはず。
[ –apply-slave-statements ]オプションをつけていれば、自動的にSLAVEとしてスタートしているはず。mysql -u root -p < /tmp/sqldump_all_databases.sql
- [スレーブ]
動作状況を確認しておく。show slave status;
で、
Slave_IO_Running: Yes Slave_SQL_Running: Yes
が両方ともYesになっている事を確認。
Slave_SQL_Running_State: Reading event from the relay log
は、「差分読み込み中。
よく見ると、Seconds_Behind_Master: 11771
という表記もあって、マスターから遅れている秒数を表示してくれている。
Slave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update it
は、「全ての差分読み込み完了。マスターのアップデート待ち」という状態。
これで、スレーブ出来上がる、はず。