本文为您介绍如何调用OpenAPI配置DTS同步、迁移、订阅任务。
背景信息
调用OpenAPI配置DTS任务与在控制台配置DTS任务一样,分为先购买再配置和先配置再购买两种。
先购买再配置的DTS任务:
同步或迁移任务:该任务是否启动预检查模块,取决于配置DTS任务接口(ConfigureDtsJob)中预留参数(Reserve参数)的
autoStartModulesAfterConfig
的参数值。订阅任务:默认不会启动预检查模块。
先配置再购买的DTS任务:
该任务是否启动预检查模块,取决于购买DTS实例接口(CreateDtsInstance)中
AutoStart
的参数值。
注意事项
在调用OpenAPI接口时,请务必注意参数的格式,否则可能会导致接口调用失败。
调用OpenAPI先购买再配置的同步或迁移任务,若预检查模块执行完成且无报错,则该DTS任务将自动执行后续所有模块。
准备工作
收集数据库实例信息,例如源库实例的ID、地域、域名或IP地址、端口、数据账号、账号密码等。
操作步骤
本操作以配置迁移任务为例,为您介绍调用OpenAPI配置DTS任务的方法。
场景一:先购买再配置
暂不启动预检查模块
调用CreateDtsInstance接口购买DTS实例。
请求示例
{ "DestinationEndpointEngineName":"MySQL", "DestinationRegion":"cn-hangzhou", "InstanceClass":"small", "PayType":"PostPaid", "RegionId":"cn-hangzhou", "SourceEndpointEngineName":"MySQL", "SourceRegion":"cn-hangzhou", "Type":"MIGRATION" }
返回示例
{ "RequestId": "76C0****-879D-5FB7-8F08-BC11B67C****", "InstanceId": "dtsza0i4l8x167****", "Success": true, "JobId": "za0i4l8x167****" }
调用ConfigureDtsJob接口配置DTS任务。
说明需在预留参数(Reserve参数)中,将
autoStartModulesAfterConfig
的参数值指定为none。订阅任务需调用ConfigureSubscription接口,且预留参数(Reserve参数)中的
autoStartModulesAfterConfig
参数不生效。
请求示例
{ "DataInitialization":"true", "DataSynchronization":"false", "DestinationEndpointInstanceType":"RDS", "DtsJobName":"rdsmysql_to_rdsmysql", "JobType":"MIGRATION", "SourceEndpointInstanceType":"RDS", "StructureInitialization":"true", "DbList":{ "dtsdb":{ "name":"dtsdb_1", "all":"false", "Table":{ "person":{ "name":"person", "all":"true" } } } }, "DestinationEndpointEngineName":"MYSQL", "DestinationEndpointInstanceID":"rm-bp1072qxu5q3h****", "DestinationEndpointPassword":"**********", "DestinationEndpointRegion":"cn-hangzhou", "DestinationEndpointUserName":"dtstest", "DtsInstanceId":"dtsza0i4l8x167****", "RegionId":"cn-hangzhou", "Reserve":{ "targetTableMode":"0", "autoStartModulesAfterConfig":"none" }, "SourceEndpointDatabaseName":"dtsdb", "SourceEndpointEngineName":"MYSQL", "SourceEndpointInstanceID":"rm-bp1072qxu5q3h****", "SourceEndpointPassword":"**********", "SourceEndpointRegion":"cn-hangzhou", "SourceEndpointUserName":"dtstest" }
返回示例
{ "DtsJobId": "za0i4l8x167****", "RequestId": "9233****-9539-5DB7-B801-69AADEB9****", "HttpStatusCode": 200, "DtsInstanceId": "dtsza0i4l8x167****", "Success": true }
可选:在业务需要时,调用StartDtsJob接口启动DTS任务(预检查并继续向后运行)。
请求示例
{ "DtsJobId":"za0i4l8x167****", "RegionId":"cn-hangzhou" }
返回示例
{ "RequestId": "CE51****-40F3-5913-AA27-C50251E2****", "HttpStatusCode": 200, "Success": true }
启动预检查模块
不适用于订阅实例。
调用CreateDtsInstance接口购买DTS实例。
请求示例
{ "DestinationEndpointEngineName":"MySQL", "DestinationRegion":"cn-hangzhou", "InstanceClass":"small", "PayType":"PostPaid", "RegionId":"cn-hangzhou", "SourceEndpointEngineName":"MySQL", "SourceRegion":"cn-hangzhou", "Type":"MIGRATION" }
返回示例
{ "RequestId": "63F4****-935A-5E55-A7BC-D0464BA1****", "InstanceId": "dtsdg6e4m0e177****", "Success": true, "JobId": "dg6e4m0e177****" }
调用ConfigureDtsJob接口配置DTS任务。
说明在预留参数(Reserve参数)中,不指定
autoStartModulesAfterConfig
的参数值或将其参数值指定为auto。若预检查模块执行完成且无报错,则DTS任务将自动执行后续所有模块。
请求示例
{ "DataInitialization":"true", "DataSynchronization":"false", "DestinationEndpointInstanceType":"RDS", "DtsJobName":"rdsmysql_to_rdsmysql_1", "JobType":"MIGRATION", "SourceEndpointInstanceType":"RDS", "StructureInitialization":"true", "DbList":{ "dtsdb":{ "name":"dtsdb_1", "all":"false", "Table":{ "person":{ "name":"person_1", "all":"true" } } } }, "DestinationEndpointEngineName":"MYSQL", "DestinationEndpointInstanceID":"rm-bp1072qxu5q3h****", "DestinationEndpointPassword":"**********", "DestinationEndpointRegion":"cn-hangzhou", "DestinationEndpointUserName":"dtstest", "DtsInstanceId":"dtsdg6e4m0e177****", "RegionId":"cn-hangzhou", "SourceEndpointDatabaseName":"dtsdb", "SourceEndpointEngineName":"MYSQL", "SourceEndpointInstanceID":"rm-bp1072qxu5q3h****", "SourceEndpointPassword":"**********", "SourceEndpointRegion":"cn-hangzhou", "SourceEndpointUserName":"dtstest" }
返回示例
{ "DtsJobId": "za0i4l8x167****", "RequestId": "9233****-9539-5DB7-B801-69AADEB9****", "HttpStatusCode": 200, "DtsInstanceId": "dtsza0i4l8x167****", "Success": true }
场景二:先配置再购买
暂不启动预检查模块
调用ConfigureDtsJob接口配置DTS任务。
说明订阅任务需调用ConfigureSubscription接口。
请求示例
{ "DataInitialization":"true", "DataSynchronization":"false", "DestinationEndpointInstanceType":"RDS", "DtsJobName":"rdsmysql_to_rdsmysql_2", "JobType":"MIGRATION", "SourceEndpointInstanceType":"RDS", "StructureInitialization":"true", "DbList":{ "dtsdb":{ "name":"dtsdb_1", "all":"false", "Table":{ "person":{ "name":"person_2", "all":"true" } } } }, "DestinationEndpointEngineName":"MYSQL", "DestinationEndpointInstanceID":"rm-bp1072qxu5q3h****", "DestinationEndpointPassword":"**********", "DestinationEndpointRegion":"cn-hangzhou", "DestinationEndpointUserName":"dtstest", "RegionId":"cn-hangzhou", "Reserve":{ "targetTableMode":"0", "autoStartModulesAfterConfig":"none" }, "SourceEndpointDatabaseName":"dtsdb", "SourceEndpointEngineName":"MYSQL", "SourceEndpointInstanceID":"rm-bp1072qxu5q3h****", "SourceEndpointPassword":"**********", "SourceEndpointRegion":"cn-hangzhou", "SourceEndpointUserName":"dtstest" }
返回示例
{ "DtsJobId": "w4rg4pj4169****", "RequestId": "F0CC****-A556-5A9D-AFF0-85D2B284****", "HttpStatusCode": 200, "Success": true }
可选:在业务需要时,参考启动预检查模块(暂不启动DTS任务)或启动预检查模块(启动DTS任务)(步骤2及之后)启动DTS任务(预检查并继续向后运行)。
启动预检查模块(暂不启动DTS任务)
调用ConfigureDtsJob接口配置DTS任务。
说明订阅任务需调用ConfigureSubscription接口。
请求示例
{ "DataInitialization":"true", "DataSynchronization":"false", "DestinationEndpointInstanceType":"RDS", "DtsJobName":"rdsmysql_to_rdsmysql_3", "JobType":"MIGRATION", "SourceEndpointInstanceType":"RDS", "StructureInitialization":"true", "DbList":{ "dtsdb":{ "name":"dtsdb_1", "all":"false", "Table":{ "person":{ "name":"person_3", "all":"true" } } } }, "DestinationEndpointEngineName":"MYSQL", "DestinationEndpointInstanceID":"rm-bp1072qxu5q3h****", "DestinationEndpointPassword":"**********", "DestinationEndpointRegion":"cn-hangzhou", "DestinationEndpointUserName":"dtstest", "RegionId":"cn-hangzhou", "SourceEndpointDatabaseName":"dtsdb", "SourceEndpointEngineName":"MYSQL", "SourceEndpointInstanceID":"rm-bp1072qxu5q3h****", "SourceEndpointPassword":"**********", "SourceEndpointRegion":"cn-hangzhou", "SourceEndpointUserName":"dtstest" }
返回示例
{ "DtsJobId": "w4rg4pj4169****", "RequestId": "F0CC****-A556-5A9D-AFF0-85D2B284****", "HttpStatusCode": 200, "Success": true }
调用StartDtsJob接口启动预检查模块。
请求示例
{ "DtsJobId":"w4rg4pj4169****", "RegionId":"cn-hangzhou" }
返回示例
{ "RequestId": "2A54****-4467-520E-B45A-D144A0C8****", "HttpStatusCode": 200, "Success": true }
调用DescribePreCheckStatus接口查看预检查模块的执行情况。
请求示例
{ "DtsJobId":"w4rg4pj4169****", "JobCode":"01", "RegionId":"cn-hangzhou", "StructType":"before" }
返回示例
若返回如下信息,表示预检查模块执行完成且无报错。
{ ****** "AnalysisJobProgress": [], "PageRecordCount": 20, "RequestId": "4436****-EE62-5DC3-8838-30807292****", "FullNetCheckJobStatus": [], "JobName": "****", "ErrorItem": 0, "SubDistributedJobStatus": [], "Code": "01", "Success": true, "PageNumber": 1, "State": "Finished", "Total": 9, "HttpStatusCode": 200, "JobId": "w4rg4pj4169****", ****** }
调用CreateDtsInstance接口购买DTS实例。
说明不指定
AutoStart
的参数值或将其参数值指定为false,DTS实例不会自动继续向后运行(等效于控制台的购买并保存)。请求示例
{ "InstanceClass":"small", "JobId":"w4rg4pj4169****", "PayType":"PostPaid", "RegionId":"cn-hangzhou" }
返回示例
{ "RequestId": "63F4****-935A-5E55-A7BC-D0464BA1****", "InstanceId": "dtsgvbn4c28167****", "Success": true, "JobId": "w4rg4pj4169****" }
可选:在业务需要时,调用StartDtsJob接口启动DTS任务。
请求示例
{ "DtsJobId":"w4rg4pj4169****", "RegionId":"cn-hangzhou" }
返回示例
{ "RequestId": "EC1F****-10B0-501E-8B3E-71963809****", "HttpStatusCode": 200, "Success": true }
启动预检查模块(启动DTS任务)
调用ConfigureDtsJob接口配置DTS任务。
说明订阅任务需调用ConfigureSubscription接口。
请求示例
{ "DataInitialization":"true", "DataSynchronization":"false", "DestinationEndpointInstanceType":"RDS", "DtsJobName":"rdsmysql_to_rdsmysql_4", "JobType":"MIGRATION", "SourceEndpointInstanceType":"RDS", "StructureInitialization":"true", "DbList":{ "dtsdb":{ "name":"dtsdb_1", "all":"false", "Table":{ "person":{ "name":"person_4", "all":"true" } } } }, "DestinationEndpointEngineName":"MYSQL", "DestinationEndpointInstanceID":"rm-bp1072qxu5q3h****", "DestinationEndpointPassword":"**********", "DestinationEndpointRegion":"cn-hangzhou", "DestinationEndpointUserName":"dtstest", "RegionId":"cn-hangzhou", "SourceEndpointDatabaseName":"dtsdb", "SourceEndpointEngineName":"MYSQL", "SourceEndpointInstanceID":"rm-bp1072qxu5q3h****", "SourceEndpointPassword":"**********", "SourceEndpointRegion":"cn-hangzhou", "SourceEndpointUserName":"dtstest" }
返回示例
{ "DtsJobId": "etom45sg17e****", "RequestId": "46F2****-69DD-59D7-8FF5-A119D72A****", "HttpStatusCode": 200, "Success": true }
调用StartDtsJob接口启动预检查模块。
请求示例
{ "DtsJobId":"etom45sg17e****", "RegionId":"cn-hangzhou" }
返回示例
{ "RequestId": "2A54****-4467-520E-B45A-D144A0C8****", "HttpStatusCode": 200, "Success": true }
调用DescribePreCheckStatus接口查看预检查模块的执行情况。
请求示例
{ "DtsJobId":"etom45sg17e****", "JobCode":"01", "RegionId":"cn-hangzhou", "StructType":"before" }
返回示例
若返回如下信息,表示预检查模块执行完成且无报错。
{ ****** "AnalysisJobProgress": [], "PageRecordCount": 20, "RequestId": "4436****-EE62-5DC3-8838-30807292****", "FullNetCheckJobStatus": [], "JobName": "****", "ErrorItem": 0, "SubDistributedJobStatus": [], "Code": "01", "Success": true, "PageNumber": 1, "State": "Finished", "Total": 9, "HttpStatusCode": 200, "JobId": "etom45sg17e****", ****** }
调用CreateDtsInstance接口购买DTS实例。
说明指定
AutoStart
的参数值为true,DTS任务将自动继续向后运行(等效于控制台的购买并启动)。请求示例
{ "AutoStart":"true", "InstanceClass":"small", "JobId":"etom45sg17e****", "PayType":"PostPaid", "RegionId":"cn-hangzhou" }
返回示例
{ "RequestId": "4280****-9D5C-5053-9CA3-FAE47248****", "InstanceId": "dtst7lg4f20178****", "Success": true, "JobId": "etom45sg17e****" }