2014/03/31

MySQL SLAVE 設定 削除

・MySQL-5.5よりRESET SLAVE;の挙動が変わり、直後にCHANGE MASTER構文を
発行しないと場合によっては問題が発生するとMySQLのドキュメントに記載されていました。
さらに、RESET SLAVE ALL;というクエリもサポートされたようです。

・In MySQL 5.6 (unlike the case in MySQL 5.1 and earlier), RESET SLAVE does not change any replication connection parameters such as master host, master port, master user, or master password, which are retained in memory. This means that START SLAVE can be issued without requiring a CHANGE MASTER TO statement following RESET SLAVE. http://dev.mysql.com/doc/refman/5.6/en/reset-slave.html


・RESET SLAVE;だけ行い、CHANGE MASTER TOを発行せずにいた場合、
バイナリログ名やポジション情報はクリアされますが、
MASTER_HOSTやMASTER_USER、MASTER_PASSWORDはそのまま残ります。
故に、何かの拍子に mysqldを再起動が掛かったら、マスタのバイナリログの先頭から
レプリケーション自動開始となり、スレーブのデータに不整合が起きて青ざめる・・・。
なんていう事故が起きそうですよね。


RESET SLAVE;             RESET SLAVE ALL;
master_log_name         master_log_name
master_log_pos             master_log_pos
ssl_verify_server_cert     ssl_verify_server_cert
heartbeat_period         heartbeat_period
-                         master_host
-                         master_user
-                         master_password

==>RESET SLAVE ALL;
my.cnfにskip-slave-startと記述しておくとさらに安心ですね。