論理移行方法を使用して、X-Engineを使用するApsaraDB RDS for MySQLインスタンスをPolarDB for MySQLクラスターにアップグレードできます。 このトピックでは、このような移行に関する注意事項、前提条件、手順、および請求について説明します。
前提条件
この移行ソリューションは、論理的な移行方法を使用します。 ソースApsaraDB RDS for MySQLインスタンスのバージョンは任意です。
ソースApsaraDB RDS for MySQLインスタンスに対してトリガーが作成されている場合は、トリガーを削除し、[続行] をクリックします。 または、[キャンセル] をクリックして、DTSコンソールでデータ同期タスクを手動で作成することもできます。 詳細については、「トリガーを含むソースデータベースのデータ同期タスクの設定」をご参照ください。
ApsaraDB RDS for MySQLインスタンスでデータベースプロキシ (セーフモード) が有効になっている場合、特権アカウントが作成されるか、ApsaraDB RDS for MySQLインスタンスのネットワーク接続モードが高性能モードに切り替えられます。 詳細については、アカウントの作成および [製品の変更 /機能の変更] ApsaraDB RDSインスタンスのネットワーク接続モードのアップグレードをご参照ください。

制限
ApsaraDB RDS for MySQLインスタンスを、同じまたはそれ以降のMySQLバージョンのPolarDB for MySQLクラスターにのみアップグレードでき、以前のMySQLバージョンのクラスターにはアップグレードできません。 たとえば、ApsaraDB RDS For MySQL 5.7インスタンスをPolarDB for MySQL 5.6クラスターにアップグレードしたり、ApsaraDB RDS for MySQL 8.0.2インスタンスをPolarDB for MySQL 8.0.1クラスターにアップグレードしたりすることはできません。
IPv6アドレスは、エンドポイントとの切り替えではサポートされません。
クロスリージョンデータ移行はサポートされていません。
データ移行中は、ソースApsaraDB RDS for MySQLインスタンスのパラメーターを設定できません。
移行できる構造体は、データベース、テーブル、ビュー、ストアドプロシージャ、関数の5種類のみです。
ソースApsaraDB RDS for MySQLインスタンスには、次の表に示す制限が適用されます。
項目
説明
ソースインスタンスの制限
同期するテーブルには、PRIMARY KEYまたはUNIQUE制約が必要であり、すべてのフィールドが一意である必要があります。 そうでない場合、宛先データベースは重複するデータレコードを含み得る。
同期するオブジェクトとしてテーブルを選択し、ターゲットデータベースのテーブルを編集 (テーブルまたは列の名前の変更など) する必要がある場合、1つのデータ同期タスクで最大1,000のテーブルを同期できます。 タスクを実行して1,000を超えるテーブルを同期すると、リクエストエラーが発生します。 この場合、テーブルを分割して複数のタスクを構成してテーブルを同期するか、データベース全体を同期するようにタスクを構成することをお勧めします。
バイナリログの次の要件を満たす必要があります。
バイナリログ機能を有効にする必要があります。 バイナリログを有効にする方法の詳細については、「インスタンスパラメーターの変更」をご参照ください。 さらに、binlog_row_imageパラメーターをfullに設定する必要があります。 それ以外の場合、事前チェック中にエラーメッセージが返され、データ同期タスクを開始できません。
増分データ同期タスクの場合、ソースデータベースのバイナリログは少なくとも24時間保持されます。 完全および増分データ同期タスクの場合、ソースデータベースのバイナリログは少なくとも7日間保持されます。 完全なデータ同期が完了したら、保持期間を24時間以上に設定できます。 そうしないと、DTSはバイナリログの取得に失敗し、タスクが失敗する可能性があります。 極端な状況では、データの不一致や損失が発生する可能性があります。 上記の要件に従って、バイナリログの保持期間を設定してください。 それ以外の場合、DTSのSLAはサービスの信頼性とパフォーマンスを保証しません。 ApsaraDB RDS For MySQLインスタンスのバイナリログファイルの詳細については、「バイナリログファイルの管理」をご参照ください。
注意事項
SSLが有効になっているかどうかは、ソースApsaraDB RDS for MySQLインスタンスとターゲットPolarDBクラスターのエンドポイントで一貫している必要があります。
ソースApsaraDB RDS for MySQLインスタンスのエンドポイントでSSLが有効になっており、[エンドポイントで切り替える] を選択してエンドポイントを切り替える場合は、PolarDBクラスターのエンドポイントでSSLが有効になっていることを確認してください。
ソースApsaraDB RDS for MySQLインスタンスのエンドポイントでSSLが無効になっている場合は、PolarDBクラスターのエンドポイントでもSSLが無効になっていることを確認してください。
ソースApsaraDB RDS for MySQLインスタンスのプライマリノードと読み取り専用ノードのホワイトリストが異なる場合、読み取り専用ノードのホワイトリストをプライマリノードのホワイトリストに事前に追加して、読み取り専用ノードのホワイトリストをターゲットPolarDBクラスターに同期できるようにする必要があります。
論理移行方法を使用した最初の完全データ同期中、DTSはソースデータベースとターゲットデータベースの読み取りおよび書き込みリソースを使用します。 これにより、データベースサーバーの負荷が増加する可能性があります。
論理移行メソッドを使用した完全データ同期中に、INSERTの同時操作により、ターゲットデータベースのテーブルが断片化されます。 完全なデータ同期が完了すると、ターゲットデータベースのテーブルスペースはソースデータベースのテーブルスペースよりも大きくなります。
論理的な移行方法を使用する場合、DTSタスクを手動でリリースしないでください。
完全なデータ同期には時間がかかります。 消費される時間は、データの量に依存する。 この期間中、ターゲットPolarDBクラスターは [作成中] 状態です。
課金
移行料金
アップグレード中のデータ移行に対しては課金されません。 ターゲットPolarDB for MySQLクラスターに対してのみ課金されます。
ホットスタンバイストレージクラスター機能を有効にするかどうかを指定し、適切なストレージタイプを選択することで、移行先PolarDB for MySQLクラスターのコストを管理できます。
手順
X-Engineを使用するApsaraDB RDS For MySQLインスタンスをPolarDB for MySQLクラスターにアップグレードする方法の詳細については、「手順」をご参照ください。 X-Engineを使用するApsaraDB RDS For MySQLインスタンスの場合、次の点に注意してください。
ステップ1: ソースApsaraDB RDS for MySQLインスタンスからデータを移行する
PolarDB for MySQL Enterprise EditionのみがInnoDBおよびX-Engineをサポートしています。 PolarDB for MySQLクラスターを作成するときは、Database EditionをEnterprise Editionに、Storage EngineをInnoDB & X-Engineに設定し、X-Engineメモリ使用量を設定します。
PolarDB for MySQLクラスターの課金方法を従量課金に設定することを推奨します。 従量課金クラスターは、データ移行に対して課金されません。
X-Engineは、ソースApsaraDB RDS for MySQLインスタンスからターゲットPolarDBクラスターにデータを移行する場合に必要です。 したがって、移行を開始した後、移行先PolarDBクラスターでテーブルを作成するときにX-Engineが使用されているかどうかを確認します。 InnoDBを使用する場合は、チケットを起票してください。
切り替え後、移行が完了する前に、データはPolarDBクラスターからソースApsaraDB RDS for MySQLインスタンスに逆移行されます。 X-Engineは、テーブルを作成するときに必要です。これは、PolarDBクラスターでテーブルを作成するときに使用されるエンジンと同じです。
ステップ2: サービスの切り替えおよびステップ3: 移行の完了
ターゲットPolarDBクラスターでは、テーブルの作成時にX-Engineの代わりにInnoDBが使用されます。 X-Engineを使用するテーブルを作成する場合は、DDLステートメントを実行してテーブルを作成するときに
engine=xengineを指定します。X-Engineをテーブルのデフォルトエンジンとして使用するには、PolarDBコンソールで
default_storage_engineパラメーターをxengineに設定します。説明default_storage_engineパラメーターを変更した後、新しいパラメーター値を有効にするには、クラスター内のすべてのノードを再起動する必要があります。 ノードを再起動する前に、サービスが悪影響を受けないことを確認してください。 作業は慎重に行ってください。