既存のMySQLレプリケーションに追加のスレーブサーバーを追加しました。マスターサーバーと古いスレーブサーバーは問題なく正常に動作していますが、新しく追加されたサーバーは次のエラーで停止しています。
Last_SQL_Errno:1032
Last_SQL_Error:テーブルxxx.email_eventsでUpdate_rowsイベントを実行できませんでした。 'email_events'でレコードが見つかりません、Error_code:1032;ハンドラエラーHA_ERR_KEY_NOT_FOUND;イベントのマスターログmysqld-bin.000410、end_log_pos 368808733
修理後数時間は大丈夫です。
質問
/usr/bin/mysqlbinlog -v --start-position=142743807 --stop-position=147399325 /data/mysql/data/master-bin.000010 > temp.log
のようなsql句のコードを見つけることができます
次に、特定の位置のtemp.logに従って、スレーブデータベースとマスターデータベースの違いを比較します。次に、スレーブデータベースを更新します。
次に、その行をmysql -e "stop slave; SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave;";
でスキップします
これが1回限りのエラーである場合は、項目をスキップしてみてください。
SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1;
スレーブを開始します。
スレーブのmy.cnfで次のように設定できます。[mysqld] slave-skip-errors = 1032
しかし、ドキュメントが言うように:エラーが発生している理由を完全に理解していない限り、このオプションを使用しないでください。このエラーの考えられる理由の1つは、「Slave_IO_Running:Yes」が原因である可能性がありますが、「Slave_SQL_Running:No」は、スレーブIOプロセスが実行されており、マスターからデータを取得していますが、実行できませんでした) Slave_SQL_Runningプロセスが停止したため、Monyogのような監視ツールを使用して、レプリケーションをプロアクティブに監視し、マスターサーバーとスレーブサーバー間のエラーまたはラグや切断について警告することができます。