Inbound Replicationのトラブルシューティング
インバウンド・レプリケーション中に見つかった問題をトラブルシューティングします。
インバウンド・レプリケーション・エラーのトラブルシューティング
インバウンド・レプリケーション関連の情報を取得して、インバウンド・レプリケーション・エラーを分離します。
MySQLシェルの使用
インバウンド・レプリケーション関連情報を取得するには、MySQLシェルまたはMySQLクライアント・プログラムを使用します。
- 実行中のレプリカDBシステム。
- レプリカDBシステムに接続されているMySQLシェルまたはMySQLクライアント・プログラム。
SHOW REPLICA STATUS \G
レプリカ・スレッドの必須パラメータに関するステータス情報を示します。SHOW REPLICA STATUSを参照してください。
SELECT * FROM performance_schema.replication_connection_status \G
ソースへのレプリカの接続を処理するI/Oスレッドの現在のステータスを示します。replication_connection_statusを参照してください。
SELECT * FROM performance_schema.replication_applier_status_by_worker \G
レプリカで適用側スレッドによって処理されるトランザクションの詳細を示します。replication_applier_status_by_workerを参照してください。
インバウンド・レプリケーション受信側エラー・コード
この表は、一般的なインバウンド・レプリケーション・レシーバのエラー・コードの一部を示しています。
表22-4インバウンド・レプリケーション受信側エラー・コード
エラー・コード | 説明 |
---|---|
MY-1045: ER_ACCESS_DENIED_ERROR; Access denied for user '%s'@'%s' |
|
MY-1227 (42000): Access denied; you need (at least one of) the SUPER or SET_USER_ID privilege(s) for this operation |
次のいずれかを実行できます。
|
MY-1236: ER_MASTER_FATAL_ERROR_READING_BINLOG Got fatal error %d from master when reading data from binary log: '%s' |
Fatal Error 1236の解決を参照してください。 |
MY-2003: Network connection has been refused |
ホスト名とポートが正しくないか、ソースが実行されていません。定義したホスト名とポートを確認し、ソースが実行中であることを確認します。 |
MY-3159: ER_SECURE_TRANSPORT_REQUIRED Connections using insecure transport are prohibited while --require_secure_transport=ON |
ソースでセキュアな接続が必要です。チャネルを定義したときに、いずれかのSSLオプションを選択したことを確認します。 |
インバウンド・レプリケーション適用側エラー・コード
この表は、一般的なインバウンド・レプリケーション・アプリケーションのエラー・コードの一部を示しています。
表22-5インバウンド・レプリケーション適用側エラー・コード
エラー・コード | 説明 |
---|---|
|
これらのエラーは、レプリカ上のデータがソースと同期しなくなった場合に発生します。たとえば、レプリカのデータが手動で編集された場合などに発生する可能性があります。 これらのエラーを修正するには、ソースとレプリカを再同期し、レプリケーション・チャネルを再開する必要があります。 |
MY-1205: ER_LOCK_WAIT_TIMEOUT |
タイムアウトが超過しました。このエラーを修正するには、レプリケーション・チャネルを再開します。チャネルの再開を参照してください。 |
MY-1595/ MY-013121: RELAY LOG READ FAILURE |
リレー・ログは破損しており、読み取れません。このエラーを修正するには、レプリケーション・チャネルをリセットします。チャネルのリセットを参照してください。 |
Fatal Error 1236の解決
論理ダンプからのGTIDセットがDBシステムに適用されていないか、バイナリ・ログがソースからパージされた場合に、エラーが発生します。バイナリ・ログはレプリケーションの必須要件です。
MySQLシェルの使用
MySQLシェルを使用して、インバウンド・レプリケーションの実行中に返されるFatal Error 1236
を解決します。
- インバウンド・レプリケーションの実行中に
Fatal Error 1236
が返されます:Got fatal error 1236 from master when reading data from binary log: 'The slave is connecting using CHANGE MASTER TO MASTER_AUTO_POSITION = 1, but the master has purged binary logs containing GTIDs that the slave requires.
初期接続ハンドシェイクで、レプリカ(DBシステム)は、受信済、コミット済またはその両方のトランザクションを含むGTIDセットを送信します。ソースは、バイナリ・ログに記録されているすべてのトランザクション(レプリカによって送信されたGTIDセットにGTIDが含まれていないもの)を送信することで応答します。このようなやり取りにより、ソースは、レプリカがまだ記録またはコミットしていないGTIDのトランザクションのみを確実に送信できます。
- ロード中にGTIDセットを適用するには、MySQLシェルの
loadDump()
コマンドでupdateGtidSet: "append"
オプションを使用します。MySQLシェルのダンプ・ロード・ユーティリティを参照してください。 - レプリカへのデータ転送に十分な時間を確保するために、ソースの期限切れログ構成を確認して増やします。binlog_expire_logs_secondsおよびexpire_logs_daysを参照してください。
レプリカとソースの同期の問題の解決
レプリカがソースから大幅に遅れており、レプリケーションがリカバリ不能になると、同期の問題が発生します。
このエラーからリカバリする前に、エラーが発生した理由を調査して修正処理を実行することをお薦めします。
MySQLシェルの使用
MySQLシェルを使用して、レプリカおよびソースの同期の問題を解決します。
- インバウンド・レプリケーションのソースとレプリカが同期しなくなり、レプリカがソースから大幅に遅れて、レプリケーションがリカバリ不能になっています。
ソースのgtid値がレプリカの値よりも低くリセットされた場合、たとえば、ソースで誤った
reset master
が発行されると、インバウンド・レプリケーションがリカバリ不能になります。そのシナリオでは、DBシステムおよびインバウンド・レプリケーション構成を再作成します。