web-dev-qa-db-ja.com

スレーブレプリケーションがLast_SQL_Errno:1032で停止する

既存の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

修理後数時間は大丈夫です。

質問

  • Last_SQL_Errno:1032を永久にスキップできますか?
  • このエラーのスキップに問題はありますか?
4
adminz

/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
Kris Roofe

これが1回限りのエラーである場合は、項目をスキップしてみてください。

SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1;

スレーブを開始します。

1
Steve

スレーブのmy.cnfで次のように設定できます。[mysqld] slave-skip-errors = 1032

しかし、ドキュメントが言うように:エラーが発生している理由を完全に理解していない限り、このオプションを使用しないでください。このエラーの考えられる理由の1つは、「Slave_IO_Running:Yes」が原因である可能性がありますが、「Slave_SQL_Running:No」は、スレーブIOプロセスが実行されており、マスターからデータを取得していますが、実行できませんでした) Slave_SQL_Runningプロセスが停止したため、Monyogのような監視ツールを使用して、レプリケーションをプロアクティブに監視し、マスターサーバーとスレーブサーバー間のエラーまたはラグや切断について警告することができます。

0
user428494