たいそうな話ではないんですが、MySQLのレプリケーションをスナップショットバックアップから再構築する方法のメモです。 公式ドキュメントにも書いてあるし、本当に備忘録。
前提
マスター側でスナップショットバックアップを取っている
- ``FLUSH TABLES WITH READ LOCK;`` して
- ``SHOW MASTER STATUS;`` して
- LVMなどでsnapshot取得して
- ``UNLOCK TABLES;`` して
取得したファイルベースのデータ一式がある場合を想定してます。
スナップショットバックアップを取得してから作業時点までのデータがバイナリログで保存されていることが条件になります。
CentOS使いなので、他の環境では細部が違うかもしれないのはご愛敬。
マスター側での作業
ありません
スレーブ側での作業
- MySQL停止
# /etc/rc.d/init.d/mysqld stop
# mv /var/lib/mysql /tmp/mysql.orig # cp -rp /tmp/mysql-snap /var/lib/mysql # chown -R mysql.mysql /var/lib/mysql
skip-slave
# /etc/rc.d/init.d/mysqld start
mysql> CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000056', MASTER_LOG_POS=188712637; mysql> START SLAVE;
結果確認
mysql> SHOW SLAVE STATUS \G;
略 Slave_IO_Running: Yes Slave_SQL_Running: Yes 略 Seconds_Behind_Master: 0
あとしまつ
MySQLの起動設定をちょっと修正
``vi /etc/my.cnf``
skip-slave