このトピックでは、自己管理型MySQLデータベースからRDS MySQLにデータを移行する方法について説明します。 Data Transmission Service (DTS) を使用してインスタンスを作成します。 DTS はフルデータ移行と増分データ移行に対応しています。 自己管理型MySQLデータベースからAlibaba Cloudにデータを移行する場合、サポートされているすべての移行タイプを使用して、サービスの継続性を確保できます。
前提条件
ApsaraDB RDS for MySQL インスタンスが作成されています。 詳細については、「ApsaraDB RDS For MySQLインスタンスの作成」をご参照ください。 詳細については、「ApsaraDB RDS For MySQLインスタンスの作成」をご参照ください。
自己管理型MySQLデータベースのエンジンバージョンは、5.1、5.5、5.6、5.7、または8.0です。
ターゲットApsaraDB RDS for MySQLインスタンスの使用可能なストレージ容量が、自己管理型MySQLデータベースのデータの合計サイズよりも大きいこと。
制限事項
DTSは、完全データ移行中にソースデータベースとターゲットデータベースの読み取りおよび書き込みリソースを使用します。 これは、データベースサーバの負荷を増加させる可能性がある。 データベースのパフォーマンスが悪い場合、仕様が低い場合、またはデータ量が多い場合、データベースサービスが利用できなくなる可能性があります。 たとえば、ソースデータベースで多数の低速SQLクエリが実行されている場合、テーブルにプライマリキーがない場合、またはターゲットデータベースでデッドロックが発生する場合、DTSは大量の読み取りおよび書き込みリソースを占有します。 データを移行する前に、移行元データベースと移行先データベースのパフォーマンスに対するデータ移行の影響を評価します。 オフピーク時にデータを移行することを推奨します。 たとえば、ソースデータベースとターゲットデータベースのCPU使用率が30% 未満の場合にデータを移行できます。
移行元データベースで移行するテーブルには、PRIMARY KEYまたはUNIQUE制約が必要であり、すべてのフィールドが一意である必要があります。 そうでない場合、宛先データベースは重複するデータレコードを含み得る。
DTSは
ROUND(COLUMN,PRECISION)関数を使用して、FLOATまたはDOUBLEデータ型の列から値を取得します。 精度を指定しない場合、DTSはFLOATデータ型の精度を38桁に設定し、DOUBLEデータ型の精度を308桁に設定します。 業務要件を満足する精度が設定されていることを確認する必要があります。DTSは、ApsaraDB RDS for MySQLインスタンスにターゲットデータベースを自動的に作成します。 ただし、ソースデータベースの名前が無効な場合は、データ移行タスクを設定する前に、ApsaraDB RDS for MySQLインスタンスにデータベースを手動で作成する必要があります。
説明ApsaraDB RDS For MySQLデータベースのデータベース命名規則とデータベースの作成方法の詳細については、「データベースの管理」をご参照ください。
データ移行タスクが失敗した場合、DTSは自動的にタスクを再開します。 ワークロードをターゲットインスタンスに切り替える前に、データ移行タスクを停止またはリリースします。 それ以外の場合、タスクの再開後、ソースデータベースのデータがターゲットインスタンスのデータを上書きします。
課金ルール
移行タイプ | タスク設定料金 | インターネットトラフィック料金 |
スキーマ移行とフルデータ移行 | 無料です。 | インターネット経由でAlibaba Cloudからデータが移行された場合にのみ課金されます。 詳細については、「課金の概要」をご参照ください。 |
増分データ移行 | 有料。 詳細については、「課金の概要」をご参照ください。 |
移行タイプ
スキーマの移行
必要なオブジェクトのスキーマをターゲットインスタンスに移行します。 DTSは、テーブル、ビュー、トリガー、ストアドプロシージャ、関数のタイプのオブジェクトのスキーマ移行をサポートしています。
説明スキーマ移行中、ビュー、ストアドプロシージャ、関数の SECURITY 属性値は DEFINER から INVOKER に変更されます。
ユーザー情報は移行されません。 ターゲットデータベースのビュー、ストアドプロシージャ、または関数を呼び出すには、INVOKERに読み取りおよび書き込み権限を付与する必要があります。
フルデータ移行
DTSは、必要なオブジェクトの履歴データを自己管理型MySQLデータベースからApsaraDB RDS for MySQLインスタンスのターゲットデータベースに移行します。
説明完全データ移行中、同時INSERT操作により、ターゲットデータベースのテーブルが断片化されます。 完全なデータ移行が完了すると、移行先データベースのテーブルスペースは移行元データベースのテーブルスペースよりも大きくなります。
増分データ移行
完全なデータ移行が完了すると、DTSは自己管理型MySQLデータベースからバイナリログファイルを取得します。 次に、DTSは、自己管理型MySQLデータベースの増分データをターゲットApsaraDB RDS for MySQLインスタンスに同期します。 増分データ移行により、自己管理型MySQLデータベースからAlibaba Cloudにデータを移行する際に、サービスの継続性を確保できます。
増分データ移行中に同期できる SQL 操作
操作タイプ | SQL文 |
DML | INSERT、UPDATE、DELETE、および REPLACE |
DDL |
|
データベースアカウントに必要な権限
データベース | スキーマ移行 | 完全なデータ移行 | 増分データ移行 |
自己管理型 MySQL データベース | SELECT 権限 | SELECT 権限 | REPLICATION SLAVE、REPLICATION CLIENT、SHOW VIEW、およびSELECT権限 |
RDS MySQL インスタンス | 読み書き権限 | 読み書き権限 | 読み書き権限 |
データベースアカウントの作成方法と権限付与方法については、以下のトピックを参照してください。
自己管理型MySQLデータベース: 自己管理型MySQLデータベースのアカウントを作成し、バイナリログを設定
RDS MySQL インスタンス: ApsaraDB RDS for MySQLインスタンスにアカウントを作成、アカウントの権限を変更
始める前に
手順
最初に DTSコンソールにログインします。
説明データ管理 (DMS) コンソールにリダイレクトされている場合は、
の
アイコンをクリックして、以前のバージョンのDTSコンソールに移動します。左側のナビゲーションウィンドウで、データ移行 をクリックします。
[移行タスク] ページの上部で、RDSインスタンスが存在するリージョンを選択します。
ページの右上隅にある [移行タスクの作成] をクリックします。
自己管理型OracleデータベースとApsaraDB RDS for MySQLインスタンスを設定します。

セクション
パラメーター
説明
非該当
タスク名
タスク名は自動生成されます。 タスクを識別するために、有益な名前を指定することを推奨します。 一意のタスク名を指定する必要はありません。
移行元データベース
インスタンスタイプ
ソースデータベースのインスタンスタイプ。 ソースデータベースのデプロイに基づいてインスタンスタイプを選択できます。 この例では、パブリックIPアドレスを持つユーザー作成データベースが選択されています。
説明他のインスタンスタイプを選択した場合、自己管理データベースのネットワーク環境をデプロイする必要があります。 詳細については、「準備の概要」をご参照ください。
インスタンスリージョン
ソースデータベースが存在するリージョン。 インスタンスタイプとして [パブリックIPアドレスを持つユーザー作成データベース] を選択した場合、[インスタンスリージョン] パラメーターを指定する必要はありません。
説明自己管理型MySQLデータベースにホワイトリストが設定されている場合は、DTSサーバーのCIDRブロックをデータベースのホワイトリストに手動で追加する必要があります。 [インスタンスリージョン] の横にある [DTS IP を取得する] をクリックして、DTS サーバーの CIDR ブロックを取得します。
データベースエンジン
移行元ディスクのタイプを設定します。 この例では、MySQLが選択されています。
Hostname or IP Address
自己管理型MySQLデータベースへの接続に使用されるエンドポイント。 この例では、パブリックIPアドレスが使用されます。
ポート番号
自己管理型MySQLデータベースのサービスポート番号。 ポートにはインターネット経由でアクセスできる必要があります。 デフォルトのポート番号は、3306 です。
データベースアカウント
自己管理型MySQLデータベースのアカウント。 アカウントに必要な権限の詳細については、このトピックの「データベースアカウントに必要な権限」をご参照ください。
データベースパスワード
データベースアカウントのパスワードを設定します。
説明ソースデータベースに関する情報を指定した後、[データベースパスワード] の横にある [接続のテスト] をクリックして、情報が有効かどうかを確認できます。 情報が有効な場合は、[合格] メッセージが表示されます。 [失敗] メッセージが表示されたら、[失敗] の横にある [チェック] をクリックします。 次に、チェック結果に基づいて情報を変更します。
ターゲットデータベース
インスタンスタイプ
ターゲットデータベースのインスタンスタイプ。 RDS インスタンスを選択します。
インスタンスリージョン
ターゲットApsaraDB RDS for MySQLインスタンスが存在するリージョン。
RDS インスタンス ID
ターゲットApsaraDB RDS for MySQLインスタンスのID。
データベースアカウント
ApsaraDB RDS for MySQLインスタンスのデータベースアカウント。 アカウントに必要な権限の詳細については、このトピックの「データベースアカウントに必要な権限」をご参照ください。
データベースパスワード
データベースアカウントのパスワードを設定します。
説明RDSインスタンスに関する情報を指定した後、[データベースパスワード] の横にある [接続のテスト] をクリックして、情報が有効かどうかを確認できます。 情報が有効な場合は、[合格] メッセージが表示されます。 [失敗] メッセージが表示されたら、[失敗] の横にある [チェック] をクリックします。 次に、チェック結果に基づいて情報を変更します。
暗号化
接続先インスタンスへの接続を暗号化するかどうかを指定します。 [暗号化なし] または[SSL 暗号化] を選択します。 SSL暗号化を選択した場合、データ移行タスクを設定する前に、ApsaraDB RDS for MySQLインスタンスのSSL暗号化を有効にする必要があります。 詳細については、「ApsaraDB RDS For MySQLインスタンスのSSL暗号化の設定」をご参照ください。
説明Encryptionパラメーターは、中国本土および中国 (香港) リージョンのリージョンでのみ使用できます。
ページの右下隅にある [ホワイトリストの設定] および [次へ] をクリックします。
ソースまたはターゲットのデータベースインスタンスが、ApsaraDB RDS for MySQLまたはApsaraDB for MongoDBインスタンスなどのAlibaba Cloudデータベースインスタンス、またはElastic Compute Service (ECS) でホストされている自己管理型データベースの場合、DTSサーバーのCIDRブロックがデータベースインスタンスのホワイトリストまたはECSセキュリティグループルールに自動的に追加されます。 ソースデータベースまたはターゲットデータベースがデータセンター上の自己管理データベースである場合、または他のクラウドサービスプロバイダーからのデータベースである場合、DTSサーバーのCIDRブロックを手動で追加して、DTSがデータベースにアクセスできるようにする必要があります。 DTSサーバーのCIDRブロックの詳細については、「DTSサーバーのCIDRブロックをオンプレミスデータベースのセキュリティ設定に追加する」トピックの「DTSサーバーのCIDRブロック」セクションをご参照ください。
警告DTSサーバーのCIDRブロックがデータベースまたはインスタンスのホワイトリスト、またはECSセキュリティグループルールに自動的または手動で追加されると、セキュリティリスクが発生する可能性があります。 したがって、DTSを使用してデータを移行する前に、潜在的なリスクを理解して認識し、次の対策を含む予防策を講じる必要があります。VPNゲートウェイ、またはSmart Access Gateway。
移行するオブジェクトと移行タイプを選択します。

パラメータまたは設定
説明
移行タイプの選択
フルデータ移行のみを実行するには、[スキーマ移行] と [フルデータ移行] を選択します。
データ移行中のサービスの継続性を確保するには、[スキーマ移行] 、[フルデータ移行] 、および [増分データ移行] を選択します。
説明増分データ移行が選択されていない場合、データ移行中にソースデータベースにデータを書き込まないでください。 これにより、ソースデータベースとターゲットデータベース間のデータの整合性が確保されます。
移行するオブジェクトの選択
[使用可能] セクションから1つ以上のオブジェクトを選択し、
アイコンをクリックして、オブジェクトを [選択済み] セクションに追加します。 説明移行するオブジェクトとして、列、テーブル、またはデータベースを選択できます。 移行するオブジェクトとしてテーブルまたは列を選択した場合、DTSは、ビュー、トリガー、ストアドプロシージャなどの他のオブジェクトを移行先データベースに移行しません。
既定では、オブジェクトがターゲットデータベースに移行された後、オブジェクトの名前は変更されません。 オブジェクト名マッピング機能を使用して、移行先データベースに移行するオブジェクトの名前を変更できます。 詳細は、オブジェクト名のマッピングをご参照ください。
オブジェクト名マッピング機能を使用してオブジェクトの名前を変更すると、そのオブジェクトに依存する他のオブジェクトの移行に失敗する可能性があります。
オブジェクトの名前を変更するかどうかを指定する
オブジェクト名マッピング機能を使用して、移行先インスタンスに移行されるオブジェクトの名前を変更できます。 詳細は、オブジェクト名のマッピングをご参照ください。
ソースデータベースまたはターゲットデータベースへの接続が失敗した場合のリトライ時間範囲の指定
デフォルトでは、DTSがソースデータベースまたはターゲットデータベースへの接続に失敗した場合、DTSは次の12時間以内に再試行します。 業務要件に基づいて再試行時間範囲を指定できます。 指定された時間範囲内にDTSがソースデータベースとターゲットデータベースに再接続された場合、DTSはデータ移行タスクを再開します。 それ以外の場合、データ移行タスクは失敗します。
説明DTSが接続を再試行すると、DTSインスタンスに対して課金されます。 業務要件に基づいて再試行時間を指定することを推奨します。 ソースインスタンスとターゲットインスタンスがリリースされた後、できるだけ早くDTSインスタンスをリリースすることもできます。
DMSがソーステーブルに対してオンラインDDL操作を実行するときに、一時テーブルをターゲットデータベースにコピーするかどうかを指定します。
DMSを使用してソースデータベースでオンラインDDL操作を実行する場合、オンラインDDL操作によって生成された一時テーブルを移行するかどうかを指定できます。
はい: DTSは、オンラインDDL操作によって生成された一時テーブルのデータを移行します。
説明オンラインDDL操作で大量のデータが生成される場合、データ移行タスクにレイテンシが発生する可能性があります。
No: DTSは、オンラインDDL操作によって生成された一時テーブルのデータを移行しません。 移行元データベースの元のDDLデータのみが移行されます。
説明[いいえ] を選択すると、ターゲットデータベースのテーブルがロックされる可能性があります。
[事前チェック] をクリックします。
説明移行タスクの開始前に事前チェックが実行されます。 移行タスクは、事前チェックが成功した後にのみ開始されます。
事前チェックが失敗した場合は、失敗した各チェック項目の横にある
アイコンをクリックして、関連する詳細を表示します。 指示に従って問題を修正し、事前チェックを再度実行します。
[次へ] をクリックします。
[設定の確認] ダイアログボックスで、[チャネル仕様] パラメーターを設定します。 次に、[データ送信サービス (従量課金) サービス規約] を読み、選択します。
[今すぐ購入してスタート] をクリックして、移行タスクを開始します。
データ移行タスクの停止
ロールバックソリューションを準備して、増分データをターゲットデータベースからソースデータベースにリアルタイムで移行することをお勧めします。 これにより、ワークロードをターゲットデータベースに切り替えることによる悪影響を最小限に抑えることができます。 詳細については、「ターゲットデータベースへのワークロードの切り替え」をご参照ください。 ワークロードを切り替える必要がない場合は、次の手順を実行してデータ移行タスクを停止できます。
フルデータ移行
フルデータ移行中にタスクを手動で停止しないでください。 そうしないと、システムはすべてのデータを移行できません。 移行タスクが自動的に終了するまで待ちます。
増分データ移行
増分データ移行中、タスクは自動的に終了しません。 移行タスクを手動で停止する必要があります。
タスクの進行状況バーに [増分データ移行] と [移行タスクは遅延しません] が表示されるまで待ちます。 その後、ソースデータベースへのデータの書き込みを数分間停止します。 場合によっては、進行状況バーに増分データ移行の遅延時間が表示されます。
増分データ移行のステータスが移行タスクが遅延なしに変更された後、移行タスクを手動で停止します。

次のステップ
データ移行に使用されるデータベースアカウントには、読み取りおよび書き込み権限があります。 データを移行した後、セキュリティを確保するためにデータベースアカウントを削除する必要があります。
よくある質問
Q: 移行タスクが事前チェックに合格しなかった場合はどうすればよいですか?
A: 詳細については、「ソースデータベースの接続」をご参照ください。
Q: 失敗したデータ移行タスクのトラブルシューティングを行うにはどうすればよいですか?
A: 詳細については、「失敗したデータ移行タスクの修正」をご参照ください。