すべてのプロダクト
Search
ドキュメントセンター

ApsaraDB RDS:ApsaraDB RDS for MySQLインスタンスでmysqldumpコマンドを実行したときにプライマリ /セカンダリの切り替えがトリガーされた場合はどうすればよいですか。

最終更新日:Jan 22, 2024

問題の説明

ApsaraDB RDS for MySQLインスタンスでmysqldumpコマンドを実行すると、プライマリ /セカンダリの切り替えがトリガーされます。

原因

RDSインスタンスのテーブルでmysqldumpコマンドを実行するときに -- master-dataパラメーターを使用しているが、-- single-transactionパラメーターを使用しない場合、コマンドの実行後にFLUSH TABLES WITH READ LOCKステートメントが実行されます。 そのため、mysqldumpコマンドを実行すると、テーブルに対してDML操作を実行できません。 DML操作が長期間実行できない場合、高可用性 (HA) システムの障害検出メカニズムが失敗します。 この場合、プライマリRDSインスタンスとセカンダリRDSインスタンスの切り替えが実行されます。
説明 HAコンポーネントがプライマリRDSインスタンスで定期的にDMLステートメントを実行し、ステートメントが長期間実行されない場合、HAシステムの障害検出メカニズムは失敗します。

解決策

mysqldumpコマンドの実行時に -- master-dataパラメーターを使用する場合は、-- single-transactionパラメーターも使用する必要があります。 このように、一貫性のあるビューが提供され、データの一貫性が保証される。 次に、UNLOCK TABLESステートメントを実行して、テーブルのロックを解除できます。 データのエクスポート中にDML操作を実行でき、プライマリ /セカンダリの切り替えはトリガーされません。

サンプルコマンド:

mysqldump -h127.0.0.1 -usystem -p123456 -- master-data=2 -- single-transaction -- set-gtid-purge=OFF -- all-databases -- triggers -- events -- routines> /tmp/all_master.sql