【MySQL】エラー1236でレプリケーションが停止している場合の修正方法【メモ】

MySQL
staging環境のデータベースに設定されているレプリケーションが何かの拍子に停止してしまっていた。本番環境では問題なく動作しているので、最近の出来事であり、かすかな記憶でマスターで実行しなくてはならないテーブル変更のクエリを誤ってスレーブで実行してしまったような気がする。「レプリケーション」の意味や意義はわかっているけれど、設定については詳しくないのでちょっと焦った。



結論:無事解決しました

今回は、マスター側サーバーで何かしらの問題が発生し、システムリブートなどが発生した場合によく起こるエラー1236の対処について考えてみたいと思います。

(中略)

ほとんどの場合は、単純にシステムのリブートなどデータベースに関連した障害でないことが多いでしょう。 その場合は、スレーブ側をマスター側に合わせるだけでOKです。

mysqlのレプリケーションを使う(5) エラー1236の対処 | レンタルサーバー・自宅サーバー設定・構築のヒント


こちらの記事がドンピシャで、ここに記載されている方法でスレーブの状態をマスターに合わせてやったら無事レプリケーションが再開されました。詳しい手順や内容は記事をご覧いただくとして、行った作業は下記の通り。


  1. マスターの状態を確認する
    show master status;
  2. スレーブでレプリケーションを止める
    stop slave;
  3. スレーブの状態をマスターに合わせる
    CHANGE MASTER TO MASTER_HOST='xxx.xxx.xxx.xxx', MASTER_LOG_FILE='mysql-bin.000', MASTER_LOG_POS=1234;
  4. スレーブでレプリケーションを再開する
    start slave;

  5. 動作確認
    show slave status \G;


大きな問題にならなかったし、素早く解決出来たから結果的には良かったのだけど、これが本番環境だったらもうちょっと面倒くさいことになっていたと思われ。不幸中の幸いでした。気をつけなくちゃ。