このトピックでは、Alibaba Cloud CLI を使用して、データ移行、データ同期、データサブスクリプションのための Data Transmission Service (DTS) タスクを作成および設定する方法について説明します。
概要
Alibaba Cloud CLI を使用した DTS タスクの作成には、主に 3 つのステップがあります。
DTS インスタンスの購入:CreateDtsInstance API を呼び出して、指定されたタイプの DTS インスタンスを購入し、そのインスタンス ID を取得します。
DTS タスクの設定:ConfigureDtsJob API を呼び出して、ソースデータベースとターゲットデータベースの接続情報、移行または同期するオブジェクト、およびその他の設定を構成します。
DTS タスクの開始:StartDtsJob API を呼び出してタスクを開始し、DescribeDtsJobDetail API を呼び出してそのステータスを照会します。
このトピックの例では、RDS for MySQL ソースデータベースから RDS for MySQL ターゲットデータベースへのデータ転送を示します。この例では、データ移行、データ同期、データサブスクリプションのタスクを作成するための CLI コマンドを示します。ソースデータベースとターゲットデータベースのパラメーターは、ご自身の環境に合わせて置き換えることができます。
前提条件
Alibaba Cloud CLI をインストールし、設定済みであること。詳細については、「Alibaba Cloud CLI のインストールまたは更新」および「認証情報の設定と管理」をご参照ください。
お使いのアクセスキーの RAM ユーザーが DTS を管理するために必要な権限を持っていること。詳細については、「システムポリシーを使用した DTS を管理するための RAM ユーザーへの権限付与」をご参照ください。
ソースデータベースとターゲットデータベースのインスタンスを作成し、DTS に必要な準備を完了していること。詳細については、「準備」をご参照ください。
注意事項
CreateDtsInstance API の
SourceRegionおよびDestinationRegionパラメーターは、ソースデータベースとターゲットデータベースのリージョンと一致している必要があります。CreateDtsInstance API の
Typeパラメーターはタスクタイプを指定します。有効な値は、MIGRATION(データ移行)、SYNC(データ同期)、SUBSCRIBE(データサブスクリプション) です。ConfigureDtsJob API の
DbListパラメーターは、移行または同期するオブジェクトを JSON 形式で指定します。フォーマットの詳細については、「移行、同期、またはサブスクライブするオブジェクト」をご参照ください。データ移行タスクは、従量課金のみに対応しています。データ同期タスクとデータサブスクリプションタスクは、従量課金とサブスクリプションの両方に対応しています。
SourceEndpointPasswordやDestinationEndpointPasswordなどのデータベースパスワードのパラメーターは、コマンドライン上でプレーンテキストで表示されるのを避けるため、環境変数として渡してください。
データ移行タスクの作成
次の例では、Alibaba Cloud CLI を使用して、RDS for MySQL データベースから別のデータベースにデータ移行タスクを作成する方法を示します。
ステップ1:移行インスタンスの購入
次のコマンドを実行して CreateDtsInstance API を呼び出し、データ移行インスタンスを購入します。
aliyun dts CreateDtsInstance \
--Type MIGRATION \
--SourceRegion cn-hangzhou \
--DestinationRegion cn-shanghai \
--SourceEndpointEngineName MySQL \
--DestinationEndpointEngineName MySQL \
--PayType PostPaid \
--InstanceClass small出力例:
{
"InstanceId": "dtsse7s11v26j****",
"JobId": "se7s11v26j****",
"RequestId": "E52C5BD7-AF7D-4F5D-A8F5-D3B5F0****",
"Success": true
}レスポンスの InstanceId を記録します。この値は DTS インスタンス ID であり、以降のステップで DtsInstanceId パラメーターとして使用されます。
ステップ2:移行タスクの設定
次のコマンドを実行して ConfigureDtsJob API を呼び出し、ソースデータベースとターゲットデータベースを設定します。
aliyun dts ConfigureDtsJob \
--DtsInstanceId dtsse7s11v26j**** \
--DtsJobName "rds_mysql_migration_demo" \
--JobType MIGRATION \
--SourceEndpointInstanceType RDS \
--SourceEndpointInstanceID rm-bp1imrtn6fq**** \
--SourceEndpointEngineName MYSQL \
--SourceEndpointRegion cn-hangzhou \
--SourceEndpointDatabaseName source_db \
--SourceEndpointUserName dts_user \
--SourceEndpointPassword '${SOURCE_DB_PASSWORD}' \
--DestinationEndpointInstanceType RDS \
--DestinationEndpointInstanceID rm-bp1k5v0rm3d**** \
--DestinationEndpointEngineName MYSQL \
--DestinationEndpointRegion cn-shanghai \
--DestinationEndpointDatabaseName target_db \
--DestinationEndpointUserName dts_user \
--DestinationEndpointPassword '${DEST_DB_PASSWORD}' \
--StructureInitialization true \
--DataInitialization true \
--DataSynchronization true \
--DbList '{"source_db":{"name":"source_db","all":true}}'出力例:
{
"RequestId": "1D234B10-5C84-4F26-B06A-3E48D2****",
"DtsJobId": "se7s11v26j****",
"ErrCode": "",
"Success": "true",
"HttpStatusCode": 200
}ステップ3:移行タスクの開始
次のコマンドを実行して StartDtsJob API を呼び出し、移行タスクを開始します。
aliyun dts StartDtsJob \
--DtsJobId se7s11v26j****出力例:
{
"RequestId": "A7B3E61D-2C2F-4B3B-A5D8-F7E49D****",
"ErrCode": "",
"Success": "true",
"HttpStatusCode": 200
}ステップ4:タスクステータスの照会
次のコマンドを実行して DescribeDtsJobDetail API を呼び出し、移行タスクのステータスを照会します。
aliyun dts DescribeDtsJobDetail \
--DtsJobId se7s11v26j****レスポンスの Status が Migrating であることを確認します。これは、移行タスクが実行中であることを示します。
データ同期タスクの作成
次の例では、Alibaba Cloud CLI を使用して、RDS for MySQL データベースから別のデータベースにデータ同期タスクを作成する方法を示します。
ステップ1:同期インスタンスの購入
次のコマンドを実行して CreateDtsInstance API を呼び出し、データ同期インスタンスを購入します。
aliyun dts CreateDtsInstance \
--Type SYNC \
--SourceRegion cn-hangzhou \
--DestinationRegion cn-hangzhou \
--SourceEndpointEngineName MySQL \
--DestinationEndpointEngineName MySQL \
--PayType PostPaid \
--InstanceClass small \
--SyncArchitecture oneway出力例:
{
"InstanceId": "dtsbi6e22ay24****",
"JobId": "bi6e22ay24****",
"RequestId": "6C2FE2A1-B9D3-4E5C-8A1B-C3F28E****",
"Success": true
}ステップ2:同期タスクの設定
次のコマンドを実行して ConfigureDtsJob API を呼び出し、同期タスクのソースデータベースとターゲットデータベースを設定します。
aliyun dts ConfigureDtsJob \
--DtsInstanceId dtsbi6e22ay24**** \
--DtsJobName "rds_mysql_sync_demo" \
--JobType SYNC \
--SourceEndpointInstanceType RDS \
--SourceEndpointInstanceID rm-bp1imrtn6fq**** \
--SourceEndpointEngineName MYSQL \
--SourceEndpointRegion cn-hangzhou \
--SourceEndpointDatabaseName source_db \
--SourceEndpointUserName dts_user \
--SourceEndpointPassword '${SOURCE_DB_PASSWORD}' \
--DestinationEndpointInstanceType RDS \
--DestinationEndpointInstanceID rm-bp1k5v0rm3d**** \
--DestinationEndpointEngineName MYSQL \
--DestinationEndpointRegion cn-hangzhou \
--DestinationEndpointDatabaseName target_db \
--DestinationEndpointUserName dts_user \
--DestinationEndpointPassword '${DEST_DB_PASSWORD}' \
--StructureInitialization true \
--DataInitialization true \
--DataSynchronization true \
--DbList '{"source_db":{"name":"source_db","all":true}}'出力例:
{
"RequestId": "8E2D3A9C-4B5F-4C6A-9D7E-A1B2C3****",
"DtsJobId": "bi6e22ay24****",
"ErrCode": "",
"Success": "true",
"HttpStatusCode": 200
}ステップ3:同期タスクの開始
次のコマンドを実行して StartDtsJob API を呼び出し、同期タスクを開始します。
aliyun dts StartDtsJob \
--DtsJobId bi6e22ay24****ステップ4:タスクステータスの照会
次のコマンドを実行して DescribeDtsJobDetail API を呼び出し、同期タスクのステータスを照会します。
aliyun dts DescribeDtsJobDetail \
--DtsJobId bi6e22ay24****レスポンスの Status が Synchronizing であることを確認します。これは、同期タスクが進行中であることを示します。
データサブスクリプションタスクの作成
次の例では、Alibaba Cloud CLI を使用して、RDS for MySQL データベースのデータサブスクリプションタスクを作成する方法を示します。
ステップ1:サブスクリプションインスタンスの購入
次のコマンドを実行して CreateDtsInstance API を呼び出し、データサブスクリプションインスタンスを購入します。
aliyun dts CreateDtsInstance \
--Type SUBSCRIBE \
--SourceRegion cn-hangzhou \
--SourceEndpointEngineName MySQL \
--PayType PostPaid \
--InstanceClass small出力例:
{
"InstanceId": "dtsk3m1zb527a****",
"JobId": "k3m1zb527a****",
"RequestId": "3F5A8B2C-6D7E-4A9B-8C1D-E2F3A4****",
"Success": true
}ステップ2:サブスクリプションタスクの設定
次のコマンドを実行して ConfigureSubscription API を呼び出し、データサブスクリプションタスクを設定します。
aliyun dts ConfigureSubscription \
--RegionId cn-hangzhou \
--DtsInstanceId dtsk3m1zb527a**** \
--DtsJobName "rds_mysql_subscribe_demo" \
--SourceEndpointInstanceType RDS \
--SourceEndpointInstanceID rm-bp1imrtn6fq**** \
--SourceEndpointEngineName MYSQL \
--SourceEndpointRegion cn-hangzhou \
--SourceEndpointDatabaseName source_db \
--SourceEndpointUserName dts_user \
--SourceEndpointPassword '${SOURCE_DB_PASSWORD}' \
--DbList '{"source_db":{"name":"source_db","all":true}}' \
--SubscriptionDataTypeDDL true \
--SubscriptionDataTypeDML true \
--SubscriptionInstanceNetworkType vpc \
--SubscriptionInstanceVPCId vpc-bp1opxu1zkhn00g**** \
--SubscriptionInstanceVSwitchId vsw-bp1s5fnvk4gn2tw****出力例:
{
"RequestId": "B4C5D6E7-8F9A-4B1C-2D3E-F4A5B6****",
"DtsJobId": "k3m1zb527a****",
"ErrCode": "",
"Success": "true",
"HttpStatusCode": 200
}SubscriptionInstanceNetworkType は必須パラメーターで、現在は vpc のみに対応しています。このパラメーターを vpc に設定する場合、SubscriptionInstanceVPCId および SubscriptionInstanceVSwitchId パラメーターも指定する必要があります。
ステップ3:サブスクリプションタスクの開始
次のコマンドを実行して StartDtsJob API を呼び出し、サブスクリプションタスクを開始します。
aliyun dts StartDtsJob \
--DtsJobId k3m1zb527a****ステップ4:タスクステータスの照会
次のコマンドを実行して DescribeDtsJobDetail API を呼び出し、サブスクリプションタスクのステータスを照会します。
aliyun dts DescribeDtsJobDetail \
--DtsJobId k3m1zb527a****レスポンスの Status が Normal であることを確認します。これは、サブスクリプションタスクが正常に実行されていることを示します。
Create a data validation task
A data validation task verifies data consistency between the source and destination databases after data migration or synchronization. The following example shows how to create a validation task for an existing data migration task.
Step 1: Purchase a validation instance
Run the following command to call the CreateDtsInstance operation to purchase a data validation instance.
aliyun dts CreateDtsInstance \
--Type CHECK \
--SourceRegion cn-hangzhou \
--DestinationRegion cn-shanghai \
--SourceEndpointEngineName MySQL \
--DestinationEndpointEngineName MySQL \
--PayType PostPaid \
--InstanceClass smallSample output:
{
"InstanceId": "dtsp2w8rx6315****",
"JobId": "p2w8rx6315****",
"RequestId": "D5E6F7A8-9B0C-4D1E-2F3A-B4C5D6****",
"Success": true
}Step 2: Configure the validation task
Run the following command to call the ConfigureDtsJob operation to configure the source and destination databases for the validation task.
aliyun dts ConfigureDtsJob \
--DtsInstanceId dtsp2w8rx6315**** \
--DtsJobName "rds_mysql_check_demo" \
--JobType CHECK \
--SourceEndpointInstanceType RDS \
--SourceEndpointInstanceID rm-bp1imrtn6fq**** \
--SourceEndpointEngineName MYSQL \
--SourceEndpointRegion cn-hangzhou \
--SourceEndpointDatabaseName source_db \
--SourceEndpointUserName dts_user \
--SourceEndpointPassword '${SOURCE_DB_PASSWORD}' \
--DestinationEndpointInstanceType RDS \
--DestinationEndpointInstanceID rm-bp1k5v0rm3d**** \
--DestinationEndpointEngineName MYSQL \
--DestinationEndpointRegion cn-shanghai \
--DestinationEndpointDataBaseName target_db \
--DestinationEndpointUserName dts_user \
--DestinationEndpointPassword '${DEST_DB_PASSWORD}' \
--StructureInitialization false \
--DataInitialization true \
--DataSynchronization false \
--DbList '{"source_db":{"name":"source_db","all":true}}'Sample output:
{
"RequestId": "E6F7A8B9-0C1D-4E2F-3A4B-C5D6E7****",
"DtsJobId": "p2w8rx6315****",
"ErrCode": "",
"Success": "true",
"HttpStatusCode": 200
}Step 3: Start the validation task
Run the following command to call the StartDtsJob operation to start the validation task.
aliyun dts StartDtsJob \
--DtsJobId p2w8rx6315****Step 4: Query the validation results
Run the following command to call the DescribeDtsJobDetail operation to query the results of the validation task.
aliyun dts DescribeDtsJobDetail \
--DtsJobId p2w8rx6315****Confirm that the Status in the returned result is Finished. This indicates that the verification task is complete. You can view the verification details in the returned result to determine whether the data is consistent.