MySQLのレプリケーションをスナップショットバックアップから再構築

たいそうな話ではないんですが、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
- MySQLの起動設定をちょっと修正 ``vi /etc/my.cnf``
skip-slave
↑を追記 - MySQL起動
# /etc/rc.d/init.d/mysqld start
- レプリケーション設定を調整 ↓``SHOW MASTER STATUS``の出力をみて調整。その後レプリケーション開始
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
になって、レプリケーションが追いついていることが確認できればokです。
あとしまつ
MySQLの起動設定をちょっと修正 ``vi /etc/my.cnf``
skip-slave
↑を削除
MySQL 

See also