同期レプリケーションを割り込み処理MySQLデータベースのマスタ・スレーブ

序文

----

レプリケーションでは、時にはためコピーエラーのため、コピーを中断。通常、通常のSQL文は、メインライブラリで実行されますが、ライブラリに同期してから、様々な理由のために、レプリケーションエラーが報告されたSQLの実行に失敗、その結果、対応するデータを見つけることができないため。次の主要ないくつかの一般的な間違いを書きました。

コピーして、プロセスの中断

---------------

中断をコピーします。

  • 1062エラー:すでに存在しているライブラリからデータを書き込みます。より多くの自己成長のIDがすでに存在している表示されます。

  • エラー1032は:削除、対応するレコードを検索ライブラリからデータが少なく、更新が表示されます。

  • その他:DDL操作エラー

これらの状態の処置:

  • この問題が発生した、あなたは、代わりにトランザクションをスキップのコピーを満たす方法を考える必要があります。以上である必要があり、エラー発生したエラー訂正をスキップして、メインのライブラリのコピーを接続することはお勧めしません、それ以外の場合はからますます矛盾したデータベースになります!

  • 1062年と1032年のための遅いいくつかの修理マニュアル操作は、間違っていることが正しいの監視、自動化スクリプトを書くことができます。

  • 注意:データはしばしば矛盾している場合は、場合あまりにも多くのデータをチェックアウトして同じデータを、矛盾している場合には、ライブラリから使用できなくなりましたことを、確認するために、低ピーク営業期間、テストデータ(PT-テーブル・チェックサム)を選択し、[作成ライブラリーから!

一般的な複製エラー

-----------

[エラーコード-1062]

処理操作:

  • (またはメインライブラリからこのサプリメントを置くために重複除外データベースで)このような状況、ニーズやビジネスの交渉、または何をすべきか、その場合には、会社の規定の形成を扱います。

  • 一般的には、そのライブラリーからのデータの削除、その複製が続行します。

  • 問題を解決するために、PT-スレーブの再起動を使用し、それがエラーをバイパスします、それはエラーを処理することが推奨され、それはデータの整合性を確保することができます

実行します。

  • ものを見つけて

    • 伝統的なレプリケーション:Exec_Master_Log_Posとend_log_pos情勢の中間LAST_ERROR

    • GTIDコピー:executed_gtid_set:XXXXX:1-5、つまり、最初の6がトランザクションを与えられています。

    • マスタ:mysqlbinlogは-vv --base64出力=デコード行--start位置......

  • スレーブ上の記事データの削除、そのコピーを接続します

    • >設定しSQL_LOG_BIN = 0;#書かれたバイナリログの現在のセッションの操作記録を禁止します

    • > ID = 35197 xn_db.t_order_produceから削除します。

    • >設定しSQL_LOG_BIN = 1;#ノーマル

    • >スレーブSQL_THREADを開始します。#は、SQLスレッドを開始

[エラーコード-1032]

1032のエラーが分かれています更新と誤ったエラーを削除します。

処理操作を更新します。

  • 限り、SQLが正常に実行することができますよう、メインのライブラリ値(なし特定の回復)主キーに出て行け。

アップデートを実行します。

  • ものを見つけて

    • 伝統的なレプリケーション:Exec_Master_Log_Posとend_log_pos情勢の中間LAST_ERROR

    • GTIDコピー:executed_gtid_set:XXXXX:1-5、つまり、最初の6がトランザクションを与えられています。

    • マスタ:mysqlbinlogは-vv --base64出力=デコード行--start位置......

  • データは、ちょうど成功したエラーへのトランザクションの実装に合わせて、それを作成しませんでした

    • >設定SQL_LOG_BIN = 0。

    • > xn_db.t_mes(ID)の値(35592)に挿入します。

    • >設定SQL_LOG_BIN = 1。

    • >スレーブSQL_THREADを開始します。

処理動作を削除します。

  • データベースからのデータが存在しない場合には、失敗した欠失をもたらす取引がライブラリーから実行が同じである前に、削除はデータが内に存在しないこと、DELETE文を実行し、いないいないスキップと等価であるので、あなたは、このエラーをスキップすることができますライブラリから。

特定の操作を削除します。

  • 伝統的なレプリケーション:

    • >停止スレーブ;

    • > SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1;#トランザクションをスキップ

    • >スレーブを起動します。

  • GTIDコピー:

    • >停止スレーブ;

    • >設定しgtid_net = 'XXXXX:6' #6のスキップ特定のトランザクション

    • >開始; COMMIT;#は、トランザクション6のためのスペース総務、そのGTIDを行います

    • >設定gtid_next = '自動';

おすすめ

転載: www.cnblogs.com/HKROnline-SyncNavigator/p/10972103.html