読者です 読者をやめる 読者になる 読者になる

MySQLのスレーブを再起動しても勝手にレプリケーションが再開しないようにする

MySQLで、マスタ系を動かしたまま、スレーブの更新を一時的に止めたいという状況はよくあります。スレーブ群の中から一台だけサービスアウトし、STOP SLAVE;してテーブル変更やリペアテーブルしてからSTART SLAVE;するというやつです。

このSTOP SLAVE;ですが、MySQLプロセスを再起動すると勝手にSLAVEが再開してしまいます。ですので、テーブル変更時にうっかり(ディスク増強などのために)MySQLを再起動するといつの間にかレプリケーションが始まってウワーッとなります。悲しいですね。

my.confにこのようなレプリケーションの自動開始の抑制オプションがないか探してみましたが、ないようです。skip-networkingを有効にしておけばスタンドアローン化するかと思いましたが、これは「TCPをリッスンしない」オプションなので、リッスン側のマスターでレプリケーションを抑止するのに役にたっても、スレーブ側の抑止には役に立たないようです。

CHANGE MASTER TO構文でわざと存在しないホストをマスターに指定することも考えましたが、正しい設定をどこかにメモっておかなければならないので若干面倒くさいです。ですので、master.infoファイルを一時退避することで「MySQLのスレーブを再起動しても勝手にレプリケーションが再開しないようにする」が実現できることを確認しました。

mv master.info master.info.bk

 

mysql> show slave status\G;
Empty set (0.00 sec)

ERROR: 
No query specified

あんまり安全では無さそうですが、やむを得ずスレーブ停止中に再起動が必要になった時には自己責任でお試しください。あともっとマトモなやり方を知っていたら教えてください

 

追記

ありがとうございます。