MySQL レプリケーション: 失敗したクエリをスレーブに伝播しない

MySQL レプリケーション: 失敗したクエリをスレーブに伝播しない

マスター 1 台とスレーブ 2 台でシンプルな MySQL レプリケーションを設定しています。マスターで実行されるクエリが、重複した一意のキーやその他の理由で失敗することがあります。失敗したクエリがスレーブ サーバーに複製され、そこでもエラーが発生しているのがわかります。不正なクエリがあるたびにレプリケーションが停止するため、毎回これを修正しなければならないのは面倒で非常に面倒です。

マスターでクエリが失敗した場合、MySQL はそれをスレーブに伝播する必要はないように思われます。MySQL をこのように構成できますか? どのようにですか? Google で検索して MySQL ドキュメントを参照してみましたが、見つかりません。

答え1

MySQL のレプリケーションは、binlog を通じて行われます。binlog には成功したトランザクションのみが書き込まれるため、マスターでクエリが失敗した場合は、binlog には表示されません。つまり、この種のクエリはレプリカには表示されません。更新用の列がないため、slave1 でレプリケーションが停止するなどのエラーが発生した場合は、マスターとスレーブが異なることを意味します。percona-toolkit をインストールし、pt-table-checksum を使用してテーブルを確認する必要があります。

関連情報