web-dev-qa-db-ja.com

致命的なエラーが発生しました1236スレーブにはマスターのSERVER_UUIDを使用して、マスターよりも多くのGTIDがあります

MySQL 5.6を実行している2台のサーバーでGTIDを使用してレプリケーションをテストしています。レプリケーションは正常に実行されていましたが、現在は機能していません。スレーブでshow slave status\Gを実行すると、次のエラーメッセージが表示されます

Last_IO_Errno:1236 Last_IO_Error:バイナリログからデータを読み取るときに、マスターから致命的なエラー1236が発生しました: 'マスターのSERVER_UUIDを使用して、スレーブにはマスターよりも多くのGTIDがあります。これは、バイナリログの最後が切り捨てられたか、最後のバイナリログファイルが失われたことを示している可能性があります。たとえば、sync_binlog!= 1のときに電源またはディスクに障害が発生した後です。マスターは、すでにレプリカであったトランザクションをロールバックしたかどうか」

私はマスターをリセットし、スレーブを停止、リセット、再起動しようとしましたが、運が悪く、この特定の問題に関する情報をオンラインで見つけることができません。

奇妙なことに、マスターでshow slave status\Gをチェックすると、別のエラーが発生します。

Last_Errno:1007 Last_Error:エラー 'データベース' repltest 'を作成できません。クエリでデータベースが存在します。デフォルトのデータベース: 'repltest'。クエリ:「データベースrepltestを作成する」

しかし、スレーブとマスターの両方をチェックすると、データベース 'repltest'が存在しません。これは、レプリケーションが機能していることを確認するためにマスターで作成したデータベースであり、後でマスターから削除しました。

編集-注:これは、アプリケーションからのアクティブなデータベース接続がないステージング環境です。これは単にGTIDでレプリケーションをテストするために設定されました

1
amatusko

この blogpost で概説されている手順に基づいてスレーブを復元する必要があります。レプリケーションが修正されたら、次に pt-table-checksum および pt-table-sync を実行して、2つのサーバー間でデータを同期することができます。

2
jerichorivera