レプリケーションがエラーを起こした
ブレーカーが落ちてサーバ機器が止まり、復旧した際にMySQLのレプリケーションがエラーで止まっていたので回復させた際のメモ。
回復手順
スレーブ側のレプリケーションを止める
slave
# mysql -u root -p
Enter password:
mysql> stop slave;
マスタ側のMySQLを止める
(キャッシュの吐き出しと更新を止めるため)
master
# systemctl stop mysql
データベースをコピー
(データベースのファイルPATHやスレーブのホスト名は適宜指定する事)
master
# scp -p -r /var/lib/mysql/DATABASE SLAVE:/var/lib/mysql/
マスタ側のMySQLを起動
master
# systemctl start mysql
現在のログファイルとポジションを確認
master
# mysql -u root -p
Enter password:
mysql> show master status\G
*************************** 1. row ***************************
File: mysql-bin.002311
Position: 138673
Binlog_Do_DB: DATABASE
Binlog_Ignore_DB:
1 row in set (0.01 sec)
スレーブ側の設定
上のFileとPositionの値を
master_log_fileとmaster_log_posに設定する
slave
# mysql -u root -p
Enter password:
mysql> change master to master_log_file='mysql-bin.002311',master_log_pos=138673;
スレーブ側のレプリケーションを再開
slave
mysql> start slave;