このトピックでは、Data Transmission Service (DTS) を使用してApsaraDB RDSインスタンス間でデータを移行する方法について説明します。 DTS はフルデータ移行と増分データ移行に対応しています。 データ移行タスクを設定するときに、サポートされているすべての移行方法を選択して、ビジネスの継続性を確保できます。
DTSを使用する前に、DTSにAlibaba Cloudリソースへのアクセス権限があることを確認してください。 詳細については、「DTSによるAlibaba Cloudリソースへのアクセス許可」をご参照ください。
前提条件
ApsaraDB RDSインスタンスのデータベースタイプは、次の要件を満たしています。
ソースデータベース | 宛先データベース |
ApsaraDB RDS for MySQL ApsaraDB RDS for MariaDB | ApsaraDB RDS for MySQL ApsaraDB RDS for MariaDB |
ApsaraDB RDS for SQL Server | ApsaraDB RDS for SQL Server |
ApsaraDB RDS for PostgreSQL | ApsaraDB RDS for PostgreSQL |
注意事項
データ移行は、ソースデータベースのデータには影響しません。 データ移行中、DTSはソースデータベースのデータを読み取り、そのデータをターゲットデータベースにコピーします。 DTSは、ソースデータベースのデータを削除しません。 詳細については、「データ移行モードでのDTSの仕組み」をご参照ください。.
- DTSは、完全データ移行中にソースデータベースとターゲットデータベースの読み取りおよび書き込みリソースを使用します。 これは、データベースサーバの負荷を増加させる可能性がある。 データベースのパフォーマンスが悪い場合、仕様が低い場合、またはデータ量が多い場合、データベースサービスが利用できなくなる可能性があります。 たとえば、ソースデータベースで多数の低速SQLクエリが実行されている場合、テーブルにプライマリキーがない場合、またはターゲットデータベースでデッドロックが発生する場合、DTSは大量の読み取りおよび書き込みリソースを占有します。 データを移行する前に、移行元データベースと移行先データベースのパフォーマンスに対するデータ移行の影響を評価します。 オフピーク時にデータを移行することを推奨します。 たとえば、ソースデータベースとターゲットデータベースのCPU使用率が30% 未満の場合にデータを移行できます。
- 移行元データベースで移行するテーブルには、PRIMARY KEYまたはUNIQUE制約が必要であり、すべてのフィールドが一意である必要があります。 そうでない場合、宛先データベースは重複するデータレコードを含み得る。
データの一貫性を確保するため、フルデータ移行中はソースApsaraDB RDSインスタンスにデータを書き込まないことを推奨します。
データ移行タスクが失敗して停止すると、DTSは自動的にタスクを再開します。 ワークロードをターゲットインスタンスに切り替える前に、データ移行タスクを停止またはリリースします。 それ以外の場合、タスクの再開後、ソースインスタンスのデータはターゲットインスタンスのデータを上書きします。
DTSは、ターゲットApsaraDB RDSインスタンスにデータベースを自動的に作成します。 ただし、ソースデータベースの名前がApsaraDB RDSの命名規則を満たしていない場合は、データ移行タスクを設定する前に、ターゲットApsaraDB RDSインスタンスにデータベースを手動で作成する必要があります。
説明ApsaraDB RDSの命名規則とデータベースの作成方法の詳細については、「アカウントとデータベースの作成」をご参照ください。
ApsaraDB RDS for PostgreSQLインスタンス間でデータを移行する場合、次の制限事項に注意してください。ワークロードをターゲットデータベースに切り替えた後、新しく書き込まれたシーケンスは、ソースデータベースのシーケンスの最大値から増加しません。 したがって、ワークロードをターゲットデータベースに切り替える前に、ソースデータベース内のシーケンスの最大値を照会する必要があります。 次に、クエリされた最大値をターゲットデータベースのシーケンスの開始値として指定する必要があります。 次のステートメントを実行して、ソースデータベース内のシーケンスの最大値を照会できます。
do language plpgsql $$ 宣言 nsp名; rel名; val int8; 始める select nspname、pg_class t2、pg_namespace t3のrelnameで、t2.relnamespace=t3.oidおよびt2.relkind='S' ループ 実行形式 ($_$ select last_valueから % I.% I $_$, nsp, rel) をvalにします。 通知 '%' を上げ、 形式 ($_$ select setval('% I.% I'::regclass, % s);$_$, nsp, rel, val + 1); 終わりのループ; 終了; $$;
課金ルール
移行タイプ | タスク設定料金 | インターネットトラフィック料金 |
スキーマ移行とフルデータ移行 | 無料です。 | インターネット経由でAlibaba Cloudからデータが移行された場合にのみ課金されます。 詳細については、「課金の概要」をご参照ください。 |
増分データ移行 | 有料。 詳細については、「課金の概要」をご参照ください。 |
移行タイプ
スキーマの移行
DTSは、指定されたオブジェクトのスキーマをソースApsaraDB RDSインスタンスからターゲットApsaraDB RDSインスタンスに移行します。
フルデータ移行
DTSは、指定されたオブジェクトのすべての履歴データを、ソースApsaraDB RDSインスタンスからターゲットApsaraDB RDSインスタンスに移行します。
増分データ移行
完全データ移行が完了すると、DTSは、移行元ApsaraDB RDSインスタンスから移行先ApsaraDB RDSインスタンスに増分データを同期します。 増分データ移行により、ApsaraDB RDSインスタンス間でデータを移行する際にサービスの継続性を確保できます。
増分データ移行中に同期できる SQL 操作
シナリオ | 操作タイプ | SQL文 |
| DML | INSERT、UPDATE、DELETE、および REPLACE |
DDL |
| |
ApsaraDB RDS for SQL Serverインスタンス間でデータを移行する | DML | 挿入、更新、および削除 説明 UPDATE操作が大きなフィールドのみを更新する場合、DTSは操作を同期しません。 |
DDL |
| |
ApsaraDB RDS for PostgreSQL インスタンス間でのデータ移行 | DML | 挿入、更新、および削除 |
DDL |
|
データベースアカウントに必要な権限
シナリオ | データベース | スキーマ移行 | 完全なデータ移行 | 増分データ移行 |
| ソースインスタンス | SELECT権限 | SELECT権限 | REPLICATION SLAVE、REPLICATION CLIENT、SHOW VIEW、およびSELECT権限 |
宛先インスタンス | 読み書き権限 | 読み書き権限 | 読み書き権限 | |
ApsaraDB RDS for SQL Serverインスタンス間でデータを移行する | ソースインスタンス | SELECT権限 | SELECT権限 | 移行するオブジェクトに対する所有者の権限 説明 特権アカウントには権限があります。 |
宛先インスタンス | 読み書き権限 | 読み書き権限 | 読み書き権限 | |
ApsaraDB RDS for PostgreSQL インスタンス間でのデータ移行 | ソースインスタンス | pg_catalogの使用権限 | 移行するオブジェクトに対するSELECT権限 | rds_superuser 説明
|
宛先インスタンス | 移行するオブジェクトに対するCREATEおよびUSAGE権限 | データベース所有者の権限 (INSERT、UPDATE、およびDELETE操作を実行するための権限を含む) 説明 ApsaraDB RDS for PostgreSQLインスタンスの標準アカウントに権限があります。 | データベース所有者の権限 (INSERT、UPDATE、およびDELETE操作を実行するための権限を含む) 説明 ApsaraDB RDS for PostgreSQLインスタンスの標準アカウントに権限があります。 |
手順
最初に DTSコンソール。
説明 Data Management (DMS) コンソールにリダイレクトされている場合は、右下隅にある左側のナビゲーションウィンドウで、データ移行 をクリックします。
[移行タスク] ページの上部で、RDSインスタンスが存在するリージョンを選択します。
ページの右上隅にある [移行タスクの作成] をクリックします。
ソースデータベースとターゲットデータベースを設定します。
セクション
パラメーター
説明
N/A
タスク名
DTSが自動的に生成するタスク名。 タスクを簡単に識別できるように、わかりやすい名前を指定することをお勧めします。 一意のタスク名を指定する必要はありません。
移行元データベース
インスタンスタイプ
RDS インスタンスを選択します。
インスタンスリージョン
ソースインスタンスが存在するリージョン。
RDS インスタンス ID
ソースインスタンスの ID。
説明ソースとターゲットのApsaraDB RDSインスタンスは同じでも異なる場合もあります。 DTSを使用して、ApsaraDB RDSインスタンス内または2つのApsaraDB RDSインスタンス間でデータを移行できます。
データベース名
ApsaraDB RDS for PostgreSQLインスタンスのソースデータベースの名前。
説明このパラメーターは、ApsaraDB RDSインスタンスのデータベースエンジンがPostgreSQLの場合にのみ必要です。
データベースアカウント
ソースインスタンスのデータベースアカウント。 アカウントに必要な権限については、「データベースアカウントに必要な権限」をご参照ください。
データベースパスワード
データベースアカウントのパスワードを設定します。
説明ソースデータベースに関する情報を指定した後、[データベースパスワード] の横にある [接続のテスト] をクリックして、情報が有効かどうかを確認できます。 情報が有効な場合は、[合格] メッセージが表示されます。 [失敗] メッセージが表示されたら、[失敗] の横にある [チェック] をクリックします。 次に、チェック結果に基づいて情報を変更します。
暗号化
[暗号化なし] または[SSL 暗号化] を選択します。 SSL暗号化を選択する場合は、タスクを設定する前に、ApsaraDB RDSインスタンスのSSL暗号化を有効にする必要があります。 詳細については、以下をご参照ください。 SSL暗号化機能の設定
説明このパラメーターは、ApsaraDB RDSインスタンスのデータベースエンジンがMySQLの場合にのみ必要です。
Encryptionパラメーターは、中国本土および中国 (香港) リージョンのリージョンでのみ使用できます。
ターゲットデータベース
インスタンスタイプ
RDS インスタンスを選択します。
インスタンスリージョン
ターゲットインスタンスが配置されているリージョン。
RDS インスタンス ID
ターゲットインスタンスの ID。
説明ソースとターゲットのApsaraDB RDSインスタンスは同じでも異なる場合もあります。 DTSを使用して、ApsaraDB RDSインスタンス内または2つのApsaraDB RDSインスタンス間でデータを移行できます。
データベース名
ApsaraDB RDS for PostgreSQLインスタンスのターゲットデータベースの名前。 ターゲットデータベースの名前は、ソースデータベースの名前とは異なる場合があります。
説明このパラメーターは、ApsaraDB RDSインスタンスのデータベースエンジンがPostgreSQLの場合にのみ必要です。
データベースアカウント
ターゲットインスタンスのデータベースアカウント。 アカウントに必要な権限については、「データベースアカウントに必要な権限」をご参照ください。
データベースパスワード
データベースアカウントのパスワードを設定します。
説明RDSインスタンスに関する情報を指定した後、[データベースパスワード] の横にある [接続のテスト] をクリックして、情報が有効かどうかを確認できます。 情報が有効な場合は、[合格] メッセージが表示されます。 [失敗] メッセージが表示されたら、[失敗] の横にある [チェック] をクリックします。 次に、チェック結果に基づいて情報を変更します。
暗号化
[暗号化なし] または[SSL 暗号化] を選択します。 SSL暗号化を選択する場合、データ同期タスクを設定する前に、ApsaraDB RDSインスタンスのSSL暗号化を有効にする必要があります。 詳細については、以下をご参照ください。 SSL暗号化機能の設定
説明このパラメーターは、ApsaraDB RDSインスタンスのデータベースエンジンがMySQLの場合にのみ必要です。
Encryptionパラメーターは、中国本土および中国 (香港) リージョンのリージョンでのみ使用できます。
ページの右下隅にある [ホワイトリストの設定] および [次へ] をクリックします。
警告 DTSサーバーのCIDRブロックがデータベースまたはインスタンスのホワイトリスト、またはECSセキュリティグループルールに自動的または手動で追加されると、セキュリティリスクが発生する可能性があります。 したがって、DTSを使用してデータを移行する前に、潜在的なリスクを理解して認識し、次の対策を含む予防策を講じる必要があります。VPNゲートウェイ、またはSmart Access Gateway。移行するオブジェクトと移行タイプを選択します。
設定
説明
移行タイプの選択
ビジネス要件に基づいて移行タイプを選択します。 移行タイプはデータベースエンジンでサポートされている必要があります。
フルデータ移行のみを実行するには、[スキーマ移行] と [フルデータ移行] を選択します。
データ移行中のサービスの継続性を確保するには、[スキーマ移行] 、[フルデータ移行] 、および [増分データ移行] を選択します。
説明増分データ移行が選択されていない場合、データ移行中にソースRDSインスタンスにデータを書き込まないことを推奨します。 これにより、ソースインスタンスとターゲットインスタンス間のデータの整合性が確保されます。
移行するオブジェクトの選択
[使用可能] セクションから1つ以上のオブジェクトを選択し、アイコンをクリックして、オブジェクトを [選択済み] セクションに移動します。
説明- 移行するオブジェクトとして、列、テーブル、またはデータベースを選択できます。 移行するオブジェクトとしてテーブルまたは列を選択した場合、DTSは、ビュー、トリガー、ストアドプロシージャなどの他のオブジェクトを移行先データベースに移行しません。
- 既定では、オブジェクトがターゲットデータベースに移行された後、オブジェクトの名前は変更されません。 オブジェクト名マッピング機能を使用して、移行先データベースに移行するオブジェクトの名前を変更できます。 詳細は、オブジェクト名のマッピングをご参照ください。
- オブジェクト名マッピング機能を使用してオブジェクトの名前を変更すると、そのオブジェクトに依存する他のオブジェクトの移行に失敗する可能性があります。
オブジェクトの名前を変更するかどうかを指定する
オブジェクト名マッピング機能を使用して、移行先インスタンスに移行されるオブジェクトの名前を変更できます。 詳細は、オブジェクト名のマッピングをご参照ください。
ソースデータベースまたはターゲットデータベースへの接続が失敗した場合のリトライ時間範囲の指定
既定では、DTSがソースデータベースまたはターゲットデータベースへの接続に失敗した場合、DTSは次の720分 (12時間) 以内に再試行します。 業務要件に基づいて再試行時間範囲を指定できます。 DTSが指定された時間範囲内にソースデータベースとターゲットデータベースに再接続すると、DTSはデータ移行タスクを再開します。 それ以外の場合、データ移行タスクは失敗します。
説明DTSが接続を再試行すると、DTSインスタンスに対して課金されます。 業務要件に基づいて再試行時間範囲を指定することを推奨します。 ソースインスタンスとターゲットインスタンスがリリースされた後、できるだけ早くDTSインスタンスをリリースすることもできます。
- [事前チェック] をクリックします。 説明
- 移行タスクが開始される前にプリチェックが実行されます。 移行タスクは、事前チェックが成功した後にのみ開始されます。
- 事前チェックが失敗した場合は、失敗した各チェック項目の横にあるアイコンをクリックして、関連する詳細を表示します。 指示に従って問題を修正し、事前チェックを再度実行します。
[次へ] をクリックします。
[設定の確認] ダイアログボックスで、[チャネル仕様] パラメーターを設定します。 次に、[データ送信サービス (従量課金) サービス規約] を読み、選択します。
[今すぐ購入してスタート] をクリックして、移行タスクを開始します。
フルデータ移行
フルデータ移行タスクを手動で停止しないでください。 フルデータ移行タスクを手動で停止すると、RDSインスタンスに移行されたデータが不完全になる可能性があります。 データ移行タスクが自動的に停止するまで待つことができます。
増分データ移行
増分データ移行タスクは自動的に停止しません。 タスクを手動で停止する必要があります。
説明増分データ移行タスクを適切な時点で手動で停止することを推奨します。 たとえば、オフピーク時やワークロードをApsaraDB RDS For MySQLインスタンスに切り替える前にタスクを停止できます。
増分データ移行とデータ移行タスクが遅延しませんがデータ移行タスクのプログレスバーに表示されるまで待ちます。 その後、ソースデータベースへのデータの書き込みを数分間停止します。 増分データ移行のレイテンシは、プログレスバーに表示され得る。
増分データ移行のステータスが [データ移行タスクは遅延なし] に変わるまで待ちます。 次に、移行タスクを手動で停止します。