クラスターライブラリのステータスを表示してスレーブステータスGを表示します
ライブラリからの元のヒント: Last_Error: ワーカーにエラーがあったためコーディネーターが停止しました。 -11e7 -a98a-7cd30ac6c9ec:148408' マスター ログ mysql-bin.000010、end_log_pos 920578920。このエラーやその他のエラー (存在する場合) の詳細については、エラー ログおよび/または Performance_schema.replication_applier_status_by_worker テーブルを参照してください。
1、 Cong に従って、ライブラリのプロンプトに従って原因を見つけます。コマンド
select * from performance_schema.replication_applier_status_by_worker\G
を入力して
を取得します。このトランザクションがテーブル r_com_patent で発生したことはわかっていますが、どのレコードがあったかはわかりません。 。
2. バイナリファイルを見つけるためにメインライブラリに行ったときの出来事。コマンド
Mysqlbinlog --no-defaults –v –v --base64-output=decode-rows /usr/local/mysql/data/master-bin.000010 | grep –A ‘10’ 920578920
を入力して、最終的にレコードを見つけます。
メイン ライブラリはテーブル r_com_patent を更新しましたが、クラスター ライブラリは更新されたレコードを見つけることができません。
具体的には、メイン データベースは、テーブル r_com_patent 内の特許 ID 45 のレコードとフィールド cid を NULL から 3253026 に変更します。クラスター データベース テーブル r_com_patent 内の特許 ID 45 のレコードには、元々フィールド cid 3253026 があります。レプリケーション メカニズムにより、データベース テーブル r_com_patent で、patent_id 45、ID NULL のレコードを探す必要があるため、見つかりませんでした。 。 。
3. 解決策
1) マスター内のレコードを確認します。
Select * from r_com_patent where patent_id = 45;
2) スレーブ上で、更新されたレコードを探します。存在しないはずです。
Select * from r_com_patent where patent_id = 45;
3) スレーブで失われたデータを入力または変更します。
Insert into r_com_patent values(3253026,45);
4) スレーブ上でエラー報告トランザクションをスキップします。
Stop slave; Set @@SESSION.GTID_NEXT=’ 864e6992-0a34-11e7-a98a-7cd30ac6c9ec:148408’ Begin; Commit; Set @@SESSION.GTID_NEXT = AUTOMATIC; Start slave;
その後、もう一度確認してください
Show slave status\G
以上がMySQL マスター/スレーブ同期の問題の分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。