重要
このページは英語版のページを機械翻訳しています。原文はこちらからご覧ください。

アップストリームMySQLインスタンス間のDMワーカー接続の切り替え

DM-workerが接続するアップストリームMySQLインスタンスでダウンタイムのメンテナンスが必要な場合、またはインスタンスが予期せずクラッシュした場合は、DM-worker接続を同じ移行グループ内の別のMySQLインスタンスに切り替える必要があります。

ノート:

  • DM-worker接続を、同じプライマリ-セカンダリ移行クラスタ内のインスタンスのみに切り替えることができます。
  • 新しく接続するMySQLインスタンスには、DM-workerが必要とするbinlogが必要です。
  • DM-workerはGTIDセットモードで動作する必要があります。つまり、対応するソース構成ファイルでenable-gtid: trueを指定する必要があります。
  • 接続スイッチは、次の2つのシナリオのみをサポートします。各シナリオの手順に厳密に従ってください。そうしないと、新しく接続されたMySQLインスタンスに従ってDMクラスタを再デプロイし、データ移行タスクを最初からやり直す必要がある場合があります。

GTIDセットの詳細については、 MySQLドキュメントを参照してください。

仮想IPを介したDMワーカー接続の切り替え

DM-workerが仮想IP(VIP)を介してアップストリームMySQLインスタンスに接続する場合、VIP接続を別のMySQLインスタンスに切り替えると、アップストリーム接続アドレスを変更せずに、DM-workerに接続されているMySQLインスタンスを切り替えることになります。

ノート:

このシナリオでは、DMに必要な変更を加えます。そうしないと、VIP接続を別のMySQLインスタンスに切り替えるときに、DMが異なる接続で新しいMySQLインスタンスと古いMySQLインスタンスに同時に接続する可能性があります。この状況では、DMにレプリケートされたbinlogは、DMが受信する他のアップストリームステータスと一致せず、予測できない異常やデータの損傷さえ引き起こします。

1つのアップストリームMySQLインスタンス(DM-workerがVIP経由で接続する場合)を別のインスタンスに切り替えるには、次の手順を実行します。

  1. query-statusコマンドを使用して、binlogレプリケーションの現在の処理ユニットがダウンストリームにレプリケートしたbinlogに対応するGTIDセット( syncerBinlogGtid )を取得します。セットをgtid-Sとしてマークします。
  2. 新しいMySQLインスタンスでSELECT @@GLOBAL.gtid_purged;コマンドを使用して、パージされたbinlogに対応するGTIDセットを取得します。セットをgtid-Pとしてマークします。
  3. 新しいMySQLインスタンスでSELECT @@GLOBAL.gtid_executed;コマンドを使用して、正常に実行されたすべてのトランザクションに対応するGTIDセットを取得します。セットをgtid-Eとしてマークします。
  4. 以下の条件を満たしていることを確認してください。そうしないと、DM-work接続を新しいMySQLインスタンスに切り替えることができません。
    • gtid-Sにはgtid-Pが含まれます。 gtid-Pは空にすることができます。
    • gtid-Eにはgtid-Sが含まれます。
  5. pause-taskを使用して、データ移行の実行中のすべてのタスクを一時停止します。
  6. 新しいMySQLインスタンスに向けるようにVIPを変更します。
  7. resume-taskを使用して、前の移行タスクを再開します。

DM-workerが接続するアップストリームMySQLインスタンスのアドレスを変更します

DM-workerの構成を変更して、DM-workerをアップストリームの新しいMySQLインスタンスに接続するには、次の手順を実行します。

  1. query-statusコマンドを使用して、binlogレプリケーションの現在の処理ユニットがダウンストリームにレプリケートしたbinlogに対応するGTIDセット( syncerBinlogGtid )を取得します。このセットをgtid-Sとしてマークします。
  2. 新しいMySQLインスタンスでSELECT @@GLOBAL.gtid_purged;コマンドを使用して、パージされたbinlogに対応するGTIDセットを取得します。このセットをgtid-Pとしてマークします。
  3. 新しいMySQLインスタンスでSELECT @@GLOBAL.gtid_executed;コマンドを使用して、正常に実行されたすべてのトランザクションに対応するGTIDセットを取得します。このセットをgtid-Eとしてマークします。
  4. 以下の条件を満たしていることを確認してください。そうしないと、DM-work接続を新しいMySQLインスタンスに切り替えることができません。
    • gtid-Sにはgtid-Pが含まれます。 gtid-Pは空にすることができます。
    • gtid-Eにはgtid-Sが含まれます。
  5. stop-taskを使用して、データ移行の実行中のすべてのタスクを停止します。
  6. operator-source stopコマンドを使用して、古いMySQLインスタンスのアドレスに対応するソース構成をDMクラスタから削除します。
  7. ソース構成ファイルのMySQLインスタンスのアドレスを更新し、 operate-source createコマンドを使用してDMクラスタに新しいソース構成を再ロードします。
  8. start-taskを使用して、移行タスクを再開します。