5.6にて
Slaveを1から作成する場合
事前準備
Masterでbinログが出力されるようになっていること
MasterとSlave候補でそれぞれ異なるserver-idが設定されていること
my.cnf
[mysqld]
log_bin = /path/to/mysql-bin
server-id = <server-id>
Master作業
-- レプリケーション用ユーザーの作成
GRANT REPLICATION SLAVE ON *.* TO repl@192.168.33.102 IDENTIFIED BY 'replpass';
-- 更新ロック
FLUSH TABLES WITH READ LOCK;
-- FLUSH TABLES WITH READ LOCKが実行されたことを確認
SHOW PROCESSLIST;
-- Key_blocks_not_flushedが0であることを確認
SHOW STATUS LIKE 'Key_blocks_not_flushed';
-- InnoDBの場合、Log sequence numberがLog flushed up toと等しいことを確認
SHOW ENGINE INNODB STATUS\G
データベースのコピーを取る
cd /var/lib/mysql
# InnoDBの場合ibdata1も含む
tar cvf targetdb.tar targetdb ibdata1
# scp等でtarをSlave候補に送る
-- binログのファイル名と、Positionを控える
SHOW MASTER STATUS\G
-- ロック解除
UNLOCK TABLES;
Slave候補作業
# tarを展開。パーミッション要チェック
cd /var/lib/mysql
mv /path/to/targetdb.tar .
tar xfv targetdb.tar
mysqld再起動して、
CHANGE MASTER TO
MASTER_HOST='192.168.33.101',
MASTER_USER='repl',
MASTER_PASSWORD='replpass',
MASTER_LOG_FILE='mysql-bin.000009', -- 控えたbinログファイル名
MASTER_LOG_POS=540; -- 控えたPosition
START SLAVE;
-- 問題なくレプリケーションしているか確認
SHOW SLAVE STATUS;
既存Slaveから新たにSlaveを作成する場合
「Slaveを1から作成する場合」と同じく事前準備をする
Master作業
-- レプリケーション用ユーザーの作成
GRANT REPLICATION SLAVE ON *.* TO repl@192.168.33.103 IDENTIFIED BY 'replpass';
既存Slaveでの作業
-- IO_THREADを停止する
STOP SLAVE IO_THREAD;
-- Read_Master_Log_PosとExec_Master_Log_Posが同一になるまで待つ
-- Master_Log_File、Read_Master_Log_Posの値を控えておく
SHOW SLAVE STATUS\G
-- Key_blocks_not_flushedが0であることを確認
SHOW STATUS LIKE 'Key_blocks_not_flushed';
-- InnoDBの場合、Log sequence numberがLog flushed up toと等しいことを確認
SHOW ENGINE INNODB STATUS\G
データベースのコピーを取る
cd /var/lib/mysql
# InnoDBの場合ibdata1も含む
tar cvf targetdb.tar targetdb ibdata1
# scp等でtarをSlave候補に送る
-- レプリを再開する
START SLAVE;
-- 問題なくレプリケーションしているか確認
SHOW SLAVE STATUS;
Slave候補作業
# tarを展開。パーミッション要チェック
cd /var/lib/mysql
mv /path/to/targetdb.tar .
tar xfv targetdb.tar
mysqld再起動して、
CHANGE MASTER TO
MASTER_HOST='192.168.33.101',
MASTER_USER='repl',
MASTER_PASSWORD='replpass',
MASTER_LOG_FILE='mysql-bin.000009', -- 控えたbinログファイル名
MASTER_LOG_POS=787; -- 控えたPosition
START SLAVE;
-- 問題なくレプリケーションしているか確認
SHOW SLAVE STATUS;