投稿 2022年9月19日
更新 2022年9月19日
専門用語の数:多
現在のレプリケーションの状態を確認します。
SHOW SLAVE STATUS \G
下記の2か所が「Yes」なら問題ないです。
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
ただし、片方でも「No」になっていると、エラーが起きています。
下記のどれかにエラー内容が書いていると思います。
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
記載のエラー内容が、問題ないと判断できるのであれば、
そのエラーが起きているSQLをスキップするようにします。
以下の手順はスレーブ側で作業を行います。
スキップするために、スレーブを停止します。
STOP SLAVE;
マスターからのイベントをスキップします。
SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1;
スレーブを再開します。
START SLAVE;
ここで言う1スキップというのは、SQL文1行をスキップしてるのではなく、
「1トランザクション」をスキップしているみたいです。
このことは公式ドキュメントに記載されています。
そのため、もしトランザクション内で正常な(影響のない)SQLがあっても、
それすらスキップしてしまうため、余計に整合性が取れなくなったりもします。
しっかり理解したうえでスキップしないといけないですね。
まぁそもそもでエラーにならないことが一番ですが・・・
Another reason why SQL_SLAVE_SKIP_COUNTER is bad in MySQL
MySQLのレプリケーションでエラーが出た時の対処法でした。
エラーでないのが一番ですが、エラーになっても冷静に対処しましょう。
焦りすぎて余計ぐちゃぐちゃになってしまわないよう、お気を付けを・・。
以上、ここまで見ていただきありがとうございます。
皆さまの快適な開発ライフに、ほんの少しでもお役に立てれば幸いです。
コメント一覧