全部产品
数据传输服务DTS

配置迁移任务

更新时间:2017-08-18 15:39:45   分享:   

描述

通过这个接口进行数据迁移任务的配置,包括源/目标实例连接信息,迁移对象等。
在任务成功启动之前,可以多次调用这个接口进行任务配置的修改。

请求参数

参数名称 数据类型 是否必须 参数描述
Action String 系统参数,为这个接口的接口定义,取值为:
ConfigureMigrationJob
MigrationJobId String 迁移任务ID
MigrationJobName String 迁移任务名称
SourceEndpoint.InstanceType String 迁移源实例的实例类型,取值包括:
RDS:即RDS实例
ECS:指ECS上的自建数据库
LocalInstance:是指本地IDC的自建数据库
MongoDB:是指阿里云MongoDB实例
SourceEndpoint.Region String 源实例所在的区域,如果是自建数据库,可以选择离自建IDC物理距离最近的区域。取值包括:
cn-hangzhou: 表示公有云杭州区域
cn-shanghai:表示公有云上海区域
cn-qingdao:表示公有云青岛区域
cn-beijing:表示公有云北京区域
cn-zhangbei:表示公有云张北区域
cn-shenzhen:表示公有云深圳区域
cn-hongkong:表示公有云香港区域
us-west-1:表示公有云美西区域
us-east-1:表示公有云美东区域
ap-southeast-1:表示公有云新加坡区域
cn-hangzhou-finance-1:表示金融云杭州区域
cn-qingdao-finance-1:表示金融云青岛区域
cn-shanghai-finance-1:表示金融云上海区域
cn-shenzhen-finance-1:表示金融云深圳区域
me-east-1:表示公有云迪拜区域
en-central-1:表示公有云法兰克福区域
SourceEndpoint.InstanceId String 源实例ID
当SourceEndpoint.InstanceType为RDS时,为RDS实例ID
当SourceEndpoint.InstanceType 为ECS时,为ECS实例ID
当SouceEndpoint.InstanceType为MongoDB时,为MongoDB实例ID
SourceEndpoint.EngineName String 源实例的数据库类型,当SourceEndpoint.InstanceType为非RDS时,为必填项。取值包括:
MySQL、SQLServer、PostgreSQL、Oracle、MongoDB、Redis
SourceEndpoint.IP String 源实例的连接地址,当源实例为自建数据库时必填
SourceEndpoint.Port String 源实例的监听端口,当源实例为自建数据库时必填
SourceEndpoint.OracleSID String 当源实例数据库类型为Oracle时,这个参数为Oracle SID
SourceEndpoint.DatabaseName String 当源实例数据库类型为PostgreSQL或MongoDB时,这个参数为创建连接时使用的数据库库名
SourceEndpoint.UserName String 源实例的访问账号
SourceEndpoint.Password String 源实例的访问密码
SourceEndpoint.OwnerID String 当源实例为RDS实例,且源实例跟目标实例所属阿里云账号不同时,这个参数为源RDS实例的所属阿里云账号的UID
SourceEndpoint.Role String 当源实例为RDS实例,且源实例跟目标实例所属阿里云账号不同时,这个参数为源实例所属阿里云账号对目标实例阿里云账号的授权角色。这个角色所需的权限及授权方式详见 跨账号迁移同步
DestinationEndpoint.InstanceType String 目标实例的实例类型,取值包括:
RDS:即RDS实例
ECS:指ECS上的自建数据库
LocalInstance:是指本地IDC的自建数据库
MongoDB:是指阿里云MongoDB实例
Redis:是指阿里云kvstore实例
DRDS:即DRDS实例
PetaData:即PetaData实例
OceanBase:即OceanBase实例
DestinationEndpoint.Region String 目标实例所在区域,如果是自建数据库,可以选择离自建IDC物理距离最近的区域。取值包括:
cn-hangzhou: 表示公有云杭州区域
cn-shanghai:表示公有云上海区域
cn-qingdao:表示公有云青岛区域
cn-beijing:表示公有云北京区域
cn-zhangbei:表示公有云张北区域
cn-shenzhen:表示公有云深圳区域
cn-hongkong:表示公有云香港区域
us-west-1:表示公有云美西区域
us-east-1:表示公有云美东区域
ap-southeast-1:表示公有云新加坡区域
cn-hangzhou-finance-1:表示金融云杭州区域
cn-qingdao-finance-1:表示金融云青岛区域
cn-shanghai-finance-1:表示金融云上海区域
cn-shenzhen-finance-1:表示金融云深圳区域
me-east-1:表示公有云迪拜区域
en-central-1:表示公有云法兰克福区域:
DestinationEndpoint.InstanceId String 源实例ID
当DestinationEndpoint.InstanceType为RDS时,为RDS实例ID
当DestinationEndpoint.InstanceType 为ECS时,为ECS实例ID
当DestinationEndpoint.InstanceType为MongoDB时,为MongoDB实例ID
当DestinationEndpoint.InstanceType为Redis时,为Redis实例ID
当DestinationEndpoint.InstanceType为DRDS时,为DRDS实例ID
当DestinationEndpoint.InstanceType为PetaData时,为PetaData实例ID
当DestinationEndpoint.InstanceType为OceanBase时,为OceanBase实例ID
DestinationEndpoint.EngineName String 目标实例的数据类型,当目标实例为自建数据库时必填,取值包括:
MySQL,SQLServer,PostgreSQL,PPAS,MongoDB,Redis
DestinationEndpoint.IP String 目标实例连接地址,当目标实例为本地自建数据库时必填
DestinationEndpoint.Port String 目标实例监听端口,当目标实例为自建数据库时必填
DestinationEndpoint.DatabaseName String 目标实例的连接数据库库名,如果目标实例的数据库类型为:PostgreSQL、PPAS或MongoDB时,为必填项
DestinationEndpoint.UserName String 目标实例的访问账号
DestinationEndpoint.Password String 目标实例的访问密码
MigrationMode.StructureInitialization Boolean 迁移任务是否进行结构迁移,取值包括:
true: 表示需要进行结构迁移
false: 表示不进行结构迁移
MigrationMode.DataInitialization Boolean 迁移任务是否进行全量数据迁移,取值包括:
true: 表示需要进行全量数据迁移
false: 表示不进行结构迁移
MigrationMode.DataSynchronization Boolean 迁移任务是否进行增量数据同步,取值包括:
true: 表示需要进行增量数据同步
false: 表示不进行增量数据同步。
MigrationObjects List 需要迁移的对象,MigrationObject的具体定义详见下面的MigrationObject参数定义

MigrationObject参数定义

MigrationObject 的定义格式为 JSON字符串,且对象配置支持一定的正则表达式。

MigrationObject的定义如下:

  1. MigrationObject:{
  2. DBName:’待迁移库名’,
  3. NewDBName:”待迁移数据库在目标实例中映射的库名”
  4. SchemaName:’待迁移Schema名’,
  5. NewSchemaName:‘待迁移Schema在目标实例中映射的Schema名’,
  6. TableIncludes:[{
  7. TableName: ‘待迁移表表名’,
  8. NewTableName:‘待迁移表在目标实例映射的表名’,
  9. FilterCondition:’where condition’,
  10. ColumnIncludes:[{
  11. ColumnName:’待迁移表中需迁移列名’,
  12. NewColumnName:‘待迁移列在目标实例中映射的列名’
  13. }]
  14. ColumnExcludes:[{
  15. ColumnName:’待迁移表中不迁移列名’
  16. }]
  17. }]
  18. TableExluce:[{ 不需要迁移表定义
  19. TableName:’待迁移库名不需要迁移表的表名’
  20. }]
  21. ViewIncludes:[{ 需要迁移视图定义
  22. ViewName:’待迁移视图名称’,
  23. New-ViewName:’待迁移视图在目标实例中映射的名称’
  24. }]
  25. ViewExcludes:[{ 不需要迁移视图定义
  26. ViewName:’不迁移视图名称’
  27. }]
  28. MaterializedViewIncludes:[{ 需要迁移物化视图定义
  29. MaterializedViewName:’待迁移物化视图名称’,
  30. NewMaterializedViewName:’待迁移物化视图在目标实例中映射的名称’
  31. }]
  32. MaterializedViewExcludes:[{ 不需要迁移物化视图定义
  33. MaterializedViewName:’不迁移物化视图名称’
  34. }]
  35. SequenceIncludes:[{ 需迁移序列定义
  36. SequenceName:’待迁移序列名称’,
  37. NewSequenceName:’待迁移序列在目标实例中映射的名称’
  38. }]
  39. SequenceExcludes:[{ 不需迁移序列定义
  40. SequenceName:’不迁移序列名称’
  41. }]
  42. FunctionIncludes:[{ 需迁移函数定义
  43. FunctionName:’待迁移函数名称’,
  44. NewFunctionName:’待迁移函数在目标实例中映射的名称’
  45. }]
  46. FunctionExcludes:[{ 不需迁移函数定义
  47. FunctionName:’不迁移函数名称’
  48. }]
  49. ProcedureIncludes:[{ 需迁移存储过程定义
  50. ProcedureName:’待迁移存储过程名称’,
  51. NewProcedureName:’待迁移存储过程在目标实例中映射的名称’
  52. }]
  53. ProcedureExcludes:[{ 不需迁移存储过程定义
  54. ProcedureName:’不迁移存储过程名称’
  55. }]
  56. SynonymIncludes:[{ —需迁移同义词定义
  57. SynonymName:’待迁移同义词名称’,
  58. NewSynonymName:’待迁移同义词在目标实例中映射的名称’
  59. }]
  60. SynonymExcludes:[{ —不需迁移同义词定义
  61. ProcedureName:’不迁移存储过程名称’
  62. }]
  63. UserDefinedTypeIncludes:[{ 需迁移自定义类型定义
  64. UserDefinedTypeName:’待迁移自定义类型名称’,
  65. NewUserDefinedTypeName:’待迁移自定义类型在目标实例中映射的名称’
  66. }]
  67. UserDefinedTypeExcludes:[{ 不需迁移自定义类型定义
  68. UserDefinedTypeName:’不迁移自定义类型名称’
  69. }]
  70. RuleIncludes:[{ 需迁移规则定义
  71. RuleName:’待迁移规则名称’,
  72. NewRuleName:’待迁移规则在目标实例中映射的名称’
  73. }]
  74. RuleExcludes:[{ 不需迁移规则定义
  75. UserDefinedTypeName:’不迁移规则名称’
  76. }]
  77. OperationIncludes:[{ —需迁移操作符定义
  78. OperationName:’待迁移操作符名称’,
  79. NewOperationName:’待迁移操作符在目标实例中映射的名称’
  80. }]
  81. OperationExcludes:[{ —不需迁移操作符定义
  82. OperationName:’不迁移操作符名称’
  83. }]
  84. DomainIncludes:[{ —需迁移domain定义
  85. DomainName:’待迁移域名称’,
  86. NewDomainName:’待迁移域在目标实例中映射的名称’
  87. }]
  88. DomainExclude:[{ —不需迁移domain定义
  89. OperationName:’不迁移域名称’
  90. }]
  91. AggregateInclude:[{ —需迁移aggregate定义
  92. AggregateName:’待迁移aggregate名称’,
  93. NewAggregateName:’待迁移aggregate在目标实例中映射的名称’
  94. }]
  95. AggregateExclude:[{ —不需迁移aggregate定义
  96. AggregateName:’不迁移aggregate名称’
  97. }]
  98. ExtensionIncludes:[{ —需迁移extension定义
  99. ExtensionName:’待迁移扩展名称’,
  100. NewExtensionName:’待迁移扩展在目标实例中映射的名称’
  101. }]
  102. ExtensionExcludes:[{ —不需迁移extension定义
  103. ExtensionName:’不迁移扩展名称’
  104. }]
  105. }

其中:SchemaName和NewSchemaName只用于SQLServer,其他数据库的库名定义使用DBName和NewDBName这个参数。
当用户只配置了DBName,不配置其他子对象的规则,那么表示迁移这个数据库下面的所有对象。
当用户配置了DBName,且配置了部分对象的规则,那么不配置的对象默认不迁移。例如用户配置了TableIncludes规则,但是没有配置ViewIncludes规则,那么不迁移View对象。

各种对象名的定义可以支持如下的正则表达式:

  • 点号 . 表示匹配除’\r\n’之外的任何单个字符
  • 星号 * 表示匹配前面子表达式任意次,h.*llo匹配hllo, heeeello等字符串
  • 问号 ?表示匹配前面子表达式零次或1次,h.?llo 匹配hllo,hello,但不能匹配haello
  • [characters] 字符集合,表示匹配方括号内任意一个字符,例如h[aello]匹配hallo, hello
  • [^characters] 负值字符集合,表示不匹配方括号内任意一个字符,例如h[^ae]llo匹配hcllo,hdllo,但是不能匹配hallo, hello
  • [character1-character2] 字符范围,表示character1-character2范围内的字符都可以匹配,例如[0-9],[a-z]

返回参数

参数名称 数据类型 参数说明
公共返回参数 任务请求ID

示例

下面简单演示通过JAVA SDK 配置迁移任务的示例:

  1. private static void configureMigrationJob(String MigrationJobId){
  2. String MigrationJobName="jiangliutest";
  3. /*Source Endpoint*/
  4. String SourceEndpoint_InstanceType="RDS";
  5. String SourceEndpoint_Region="cn-hangzhou";
  6. String SourceEndpoint_InstanceId="rm-bp185gso372vbd1l8";
  7. String SourceEndpoint_UserName="*******";
  8. String SourceEndpoint_Password="*******";
  9. /*Destination Endpoint*/
  10. String DestinationEndpoint_InstanceType="RDS";
  11. String DestinationEndpoint_InstanceId="rm-bp1nx2h5fm3v6q26l";
  12. String DestinationEndpoint_UserName="******";
  13. String DestinationEndpoint_Password="******";
  14. Boolean MigrationMode_StructureIntialization=true;
  15. Boolean MigrationMode_DataIntialization=true;
  16. Boolean MigrationMode_DataSynchronization=true;
  17. String MigrationObjects="[{\"DBName\":\"jiangliutest\",\"NewDBName\":\"jiangliutest\","
  18. + "\"TableIncludes\":[{\"TableName\":\"t1\",\"NewTableName\":\"t1\"}]}]";
  19. ConfigureMigrationJobRequest request = new ConfigureMigrationJobRequest();
  20. request.setMigrationJobId(MigrationJobId);
  21. request.setMigrationJobName(MigrationJobName);
  22. request.setSourceEndpointRegion(SourceEndpoint_Region);
  23. request.setSourceEndpointInstanceType(SourceEndpoint_InstanceType);
  24. request.setSourceEndpointInstanceID(SourceEndpoint_InstanceId);
  25. request.setSourceEndpointUserName(SourceEndpoint_UserName);
  26. request.setSourceEndpointPassword(SourceEndpoint_Password);
  27. request.setDestinationEndpointInstanceType(DestinationEndpoint_InstanceType);
  28. request.setDestinationEndpointInstanceID(DestinationEndpoint_InstanceId);
  29. request.setDestinationEndpointUserName(DestinationEndpoint_UserName);
  30. request.setDestinationEndpointPassword(DestinationEndpoint_Password);
  31. request.setMigrationModeStructureIntialization(MigrationMode_StructureIntialization);
  32. request.setMigrationModeDataIntialization(MigrationMode_DataIntialization);
  33. request.setMigrationModeDataSynchronization(MigrationMode_DataSynchronization);
  34. request.setMigrationObject(MigrationObjects);
  35. try {
  36. ConfigureMigrationJobResponse response = client.getAcsResponse(request);
  37. System.out.println("Configure "+ MigrationJobId+ " Succeed");
  38. } catch (Exception e) {
  39. // TODO: handle exception
  40. System.out.println("Configure "+MigrationJobId + " Failed!");
  41. System.out.println(e.toString());
  42. }
  43. }
本文导读目录
本文导读目录
以上内容是否对您有帮助?