MySQLのスレーブサーバを別サーバに移設する時に注意すること

August 12, 2013

移設元のスレーブサーバのMySQLが停止できる場合
移設先のスレーブサーバで

  • CREATE DATABASEして
  • master.infoからreplユーザ作成して
  • dumpファイルをバックアップサーバから持ってきて〜

などの作業を行わなくてもSLAVE STOP
MySQLを落とし変更が走らない状態にして
MySQLのディレクトリを移設先にrsyncで渡した方が手間も処理速度も遥かに速い。
ただし、移設先でMySQLを起動してSLAVE STARTをすると

Could not find target log during relay log initialization rellay.log

このようにrelay_logが見つからないよ。というエラーが発生する。

16.2.2.1. The Slave Relay Log / MySQL 5.1 Reference Manual

上記のようにホスト名が変わった場合にrelay_logのindexを修正する必要がある。
これでレプリケーションが再開できるはずだ。

オペレーションの手間も少なく効率的なので、移設元のスレーブサーバの
MySQLが一時的に停止可能であれば、rsyncでデータを持っていくのが
効率的ではないでしょうか。

移設先のサーバの利用可能なメモリ容量により
innodb_buffer_pool_sizeなどのチューニングが必要になるので
設定ファイルなどは注意したい。

また、スレーブサーバの増設などの場合は、server-idの変更漏れにも
気を付けたい。取り敢えず移設でもserver-id変えておくのが吉だ。

毎回同じようなハマり方をする自分の為への戒めも兼ねた戒メモ

追記(2013/08/13)

kamipoさんのこちらのmy.cnfが参考になる。
kamipoさん、ありがとうございます。