本文通過阿里雲CLI操作樣本,示範如何通過CLI建立和配置DTS資料移轉、資料同步、資料訂閱和資料校正任務。
方案概覽
使用阿里雲CLI建立DTS任務的基本流程分為以下三個步驟:
購買DTS執行個體:調用CreateDtsInstance介面購買指定類型的DTS執行個體,擷取執行個體ID。
配置DTS任務:調用ConfigureDtsJob介面配置源庫和目標庫的串連資訊、遷移或同步對象等。
啟動DTS任務:調用StartDtsJob介面啟動任務,並通過DescribeDtsJobDetail介面查詢任務狀態。
本文以RDS MySQL為源庫、RDS MySQL為目標庫的情境為例,分別示範建立資料移轉、資料同步、資料訂閱和資料校正任務的CLI命令。您可以根據實際業務需求替換源庫和目標庫的相關參數。
前提條件
已安裝並配置阿里雲CLI。具體操作,請參見安裝/更新阿里雲 CLI和配置與管理身份憑證。
使用的AccessKey對應的RAM使用者已授予DTS相關許可權。具體許可權說明,請參見通過系統策略授權子帳號管理DTS。
已建立源庫和目標庫執行個體,並完成DTS所需的準備工作。具體操作,請參見準備工作概覽。
注意事項
CreateDtsInstance介面中的SourceRegion和DestinationRegion參數需要與源庫和目標庫所在地區一致。
CreateDtsInstance介面中的Type參數決定任務類型,取值為MIGRATION(遷移)、SYNC(同步)或SUBSCRIBE(訂閱)。
ConfigureDtsJob介面中的DbList參數為JSON格式,用於指定遷移或同步對象。具體格式說明,請參見遷移、同步或訂閱對象說明。
資料移轉任務僅支援隨用隨付(PostPaid),資料同步和資料訂閱任務支援隨用隨付(PostPaid)和訂用帳戶(PrePaid)。
CLI命令中的資料庫密碼參數(SourceEndpointPassword、DestinationEndpointPassword)建議使用環境變數傳入,避免在命令列中明文暴露。
建立資料移轉任務
以下樣本示範如何通過阿里雲CLI建立一個從RDS MySQL遷移到RDS MySQL的資料移轉任務。
步驟一:購買遷移執行個體
執行以下命令,調用CreateDtsInstance介面購買資料移轉執行個體。
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參數使用。
步驟二:配置遷移任務
執行以下命令,調用ConfigureDtsJob介面配置源庫和目標庫資訊。
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
}步驟三:啟動遷移任務
執行以下命令,調用StartDtsJob介面啟動遷移任務。
aliyun dts StartDtsJob \
--DtsJobId se7s11v26j****返回結果樣本:
{
"RequestId": "A7B3E61D-2C2F-4B3B-A5D8-F7E49D****",
"ErrCode": "",
"Success": "true",
"HttpStatusCode": 200
}步驟四:查詢任務狀態
執行以下命令,調用DescribeDtsJobDetail介面查詢遷移任務執行狀態。
aliyun dts DescribeDtsJobDetail \
--DtsJobId se7s11v26j****確認返回結果中的Status為Migrating,表示遷移任務正在運行中。
建立資料同步任務
以下樣本示範如何通過阿里雲CLI建立一個從RDS MySQL同步到RDS MySQL的資料同步任務。
步驟一:購買同步執行個體
執行以下命令,調用CreateDtsInstance介面購買資料同步執行個體。
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
}步驟二:配置同步任務
執行以下命令,調用ConfigureDtsJob介面配置同步任務的源庫和目標庫資訊。
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
}步驟三:啟動同步任務
執行以下命令,調用StartDtsJob介面啟動同步任務。
aliyun dts StartDtsJob \
--DtsJobId bi6e22ay24****步驟四:查詢任務狀態
執行以下命令,調用DescribeDtsJobDetail介面查詢同步任務狀態。
aliyun dts DescribeDtsJobDetail \
--DtsJobId bi6e22ay24****確認返回結果中的Status為Synchronizing,表示同步任務正在運行中。
建立資料訂閱任務
以下樣本示範如何通過阿里雲CLI建立一個RDS MySQL的資料訂閱任務。
步驟一:購買訂閱執行個體
執行以下命令,調用CreateDtsInstance介面購買資料訂閱執行個體。
aliyun dts CreateDtsInstance \
--Type SUBSCRIBE \
--SourceRegion cn-hangzhou \
--DestinationRegion cn-hangzhou \
--SourceEndpointEngineName MySQL \
--PayType PostPaid \
--InstanceClass small返回結果樣本:
{
"InstanceId": "dtsk3m1zb527a****",
"JobId": "k3m1zb527a****",
"RequestId": "3F5A8B2C-6D7E-4A9B-8C1D-E2F3A4****",
"Success": true
}步驟二:配置訂閱任務
執行以下命令,調用ConfigureSubscription介面配置資料訂閱任務。
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參數。
步驟三:啟動訂閱任務
執行以下命令,調用StartDtsJob介面啟動訂閱任務。
aliyun dts StartDtsJob \
--DtsJobId k3m1zb527a****步驟四:查詢任務狀態
執行以下命令,調用DescribeDtsJobDetail介面查詢訂閱任務狀態。
aliyun dts DescribeDtsJobDetail \
--DtsJobId k3m1zb527a****確認返回結果中的Status為Normal,表示訂閱任務正在運行中。
建立資料校正任務
資料校正任務用於驗證遷移或同步後源庫與目標庫的資料一致性。以下樣本示範如何為已有的資料移轉任務建立校正任務。
步驟一:購買校正執行個體
執行以下命令,調用CreateDtsInstance介面購買資料校正執行個體。
aliyun dts CreateDtsInstance \
--Type CHECK \
--SourceRegion cn-hangzhou \
--DestinationRegion cn-shanghai \
--SourceEndpointEngineName MySQL \
--DestinationEndpointEngineName MySQL \
--PayType PostPaid \
--InstanceClass small返回結果樣本:
{
"InstanceId": "dtsp2w8rx6315****",
"JobId": "p2w8rx6315****",
"RequestId": "D5E6F7A8-9B0C-4D1E-2F3A-B4C5D6****",
"Success": true
}步驟二:配置校正任務
執行以下命令,調用ConfigureDtsJob介面配置校正任務的源庫和目標庫資訊。
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}}'返回結果樣本:
{
"RequestId": "E6F7A8B9-0C1D-4E2F-3A4B-C5D6E7****",
"DtsJobId": "p2w8rx6315****",
"ErrCode": "",
"Success": "true",
"HttpStatusCode": 200
}步驟三:啟動校正任務
執行以下命令,調用StartDtsJob介面啟動校正任務。
aliyun dts StartDtsJob \
--DtsJobId p2w8rx6315****步驟四:查詢校正結果
執行以下命令,調用DescribeDtsJobDetail介面查詢校正任務的執行結果。
aliyun dts DescribeDtsJobDetail \
--DtsJobId p2w8rx6315****確認返回結果中的Status為Finished,表示校正任務已完成。您可以查看返回結果中的校正詳情判斷資料是否一致。