とあるクラウド上で、MySQLのMaster-Slave構成を組んでいるが、あるときSlaveサーバが載っているホストがダウンしたらしく、Slaveサーバもダウンした。
めでたく別ホスト上に自動で立ち上がってきたのだが、ブチッと切れたのでレプリケーションエラーが発生していた。よってSlaveを再構築することになった。
作業その前に
作業完了後は以下の確認をしたいため準備しておくこと。
Master で dump を取得
mysqldump -u root -p --opt --single-transaction --master-data --all-databases > /tmp/Master-alldatabases.dmp.`date +%Y%m%d`
ポジションの取得
後ほどSlaveの設定をする際に、ポジションの情報が必要なので、上記手順で取得した dump から MASTER_LOG_FILE 、 MASTER_LOG_POS を確認しメモしておく。
grep -i 'CHANGE MASTER TO' /tmp/Master-alldatabases.dmp.`date +%Y%m%d` ----- CHANGE MASTER TO MASTER_LOG_FILE='binary_log.000044', MASTER_LOG_POS=117069861;
Slave へ dump を転送
手順は略。環境によって具合良くやってください。
Slave で MySQL のデータをバックアップ(念のため)
cd /var/lib
tar zcvf mysql.tgz mysql/
slave の設定を削除
reset slave all;
slave status も Empty となり、 relay_log もリセットされる。
Slave に Master の Dump を投入
mysql -u root -p < /tmp/Master-alldatabases.dmp.`date +%Y%m%d`
Slave 設定
CHANGE MASTER TO MASTER_HOST='master_host', MASTER_USER='slave_user', MASTER_PASSWORD='slavepasswd', MASTER_LOG_FILE='binary_log.000044', MASTER_LOG_POS=117069861; ----- start slave ;