semi-sync replication を使用して Master Slave 構成にしたMySQLサーバで、
slaveを自分の操作で停止した場合。
データベースの中身に差分が無い場合
特に何もしないままslave startしても、
Slave側が最後に読んでたLog Positionから、
Master側が今書き込んでいるLog Positionまで読んで同期してくれる様子。
その最中に Master側とSlave側で差分があった場合、
Slave側では SQLスレッドがエラーで止まるけど、多分Master側には影響が無い。
(この辺りは調べたいところ)
データベースの中身に差分が有る場合。
データベースの中身の差分を無くした上で、同期を再開させる。
エラーを無視して同期を再開させたい場合はクエリをスキップさせて、同期を再開するように設定する。
停止した原因となったクエリを1つスキップ
mysql> SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
その後、レプリケーションを再開させる
mysql> START SLAVE;