全部产品
存储与CDN 数据库 安全 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 开发者工具 解决方案 物联网
数据传输服务DTS

配置迁移任务

更新时间:2017-11-08 16:57:04

描述

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

请求参数

参数名称 数据类型 是否必须 参数描述
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,SQL Server,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. TableExcludes:[{ 不需要迁移表定义
  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 只用于 SQL Server,其他数据库的库名定义使用 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. }
本文导读目录