全部产品
云市场

配置同步作业

更新时间:2020-06-08 11:03:52

描述

当调用购买同步作业接口购买完同步实例后,可以调用这个接口配置同步作业。
只有当同步作业处于未配置状态时,才可以调用这个接口配置作业。

请求参数

参数名称 数据类型 是否必须 参数说明
Action String 系统默认参数,这个接口的接口定义,取值为:ConfigureSynchronizationJob
SynchronizationJobId String 同步作业Id
SynchronizationJobName String 同步作业名称
SynchronizationDirection String 这个参数只有当实例为双向同步时才会使用,指定同步方向,取值包括:Forward、Reverse,默认取值为Forward
SourceEndpoint.InstanceType String 同步链路的源端的实例类型,取值为:
Redis:阿里云Redis实例
RDS:阿里云RDS实例
POLARDB:阿里云PolarDB集群(仅支持MySQL或兼容Oracle语法的引擎)
ECS:ECS上的自建数据库
Express:通过专线接入的自建数据库
dg:通过数据库网关DG接入的自建数据库
cen:通过云企业网CEN接入的自建数据库
默认取值为RDS
SourceEndpoint.InstanceId String 同步源实例的实例ID
SourceEndpoint.IP String 源实例的连接地址。当SourceEndpoint.InstanceType取值为Express、dg或cen时,本参数必须传入
SourceEndpoint.Port String 源实例的监听端口,当SourceEndpoint.InstanceType取值为ECS、Express、dg或cen时,本参数必须传入。
SourceEndpoint.UserName String 源实例的访问账号,当SourceEndpoint.InstanceType取值为ECS、Express、dg或cen时,本参数必须传入。
源库为Redis时,本参数无需传入
SourceEndpoint.Password String 源实例的访问密码,当SourceEndpoint.InstanceType取值为ECS、Express、dg或cen时,本参数必须传入。
SourceEndpoint.OwnerID String 当同步源实例跟目标实例不属于同一个阿里云账号时,这个参数为源实例所属阿里云账号的UID
SourceEndpoint.Role String 当同步源实例跟目标实例不属于同一个阿里云账号时,这个参数为源实例所属账号对目标实例所属阿里云账号的授权角色,角色的相关权限及授权方法请参见跨账号迁移同步
DestinationEndpoint.InstanceType String 同步链路的目标端的实例类型,取值为:
Redis:阿里云Redis实例
RDS:阿里云RDS实例
POLARDB:阿里云PolarDB集群(仅支持MySQL或兼容Oracle语法的引擎)
ECS:ECS上的自建数据库
Express:通过专线接入的本地数据库
DataHub:阿里云DataHub实例
MaxCompute:阿里云MaxCompute实例
AnalyticDB:云原生数据仓库AnalyticDB MySQL 2.0版本(原分析型数据库MySQL版)
AnalyticDB30:阿里云分析型数据库MySQL 3.0版本
Greenplum:云原生数据仓库ADB PostgreSQL版(原分析型数据库PostgreSQL版)
默认取值为RDS
DestinationEndpoint.InstanceId String 同步目标实例的实例ID
当目标实例为MaxCompute或DataHub时,传入MaxCompute实例或DataHub的Project名称。
当目标实例为阿里云分析型数据库MySQL版时,传入分析型数据库MySQL版的集群ID。
DestinationEndpoint.IP String 目标实例连接地址,当DestinationEndpoint.InstanceType取值为Express、dg或cen时,本参数必须传入。
DestinationEndpoint.Port String 目标实例监听端口,当DestinationEndpoint.InstanceType取值为ECS、Express、dg或cen时,本参数必须传入。
DestinationEndpoint.UserName String 目标实例的访问账号,当DestinationEndpoint.InstanceType取值为ECS、Express、dg或cen时,本参数必须传入。
目标库为Redis时,本参数无需传入
DestinationEndpoint.Password String 目标实例的访问密码,当DestinationEndpoint.InstanceType取值为ECS、Express、dg或cen时,本参数必须传入。
SynchronizationObjects List 同步对象,格式为JSON串,详情请参见本文的SynchronizationObjects参数定义。
StructureInitialization Boolean 同步之前是否进行结构对象初始化,取值包括:
true: 表示进行结构对象初始化
false:表示不进行结果对象初始化
默认取值为:true
DataInitialization Boolean 同步之前是否进行全量数据初始化,取值包括:
true: 表示进行全量数据初始化
false:表示不进行全量数据初始化
默认取值为:true
MigrationReserved String 数据同步的高级选项(本参数仅适用于Redis数据同步)。
包含如下参数:
srcRedisType:取值固定为enterprise(阿里云Redis企业版实例)。
destRedisType:目标库的实例类型,取值固定为enterprise(阿里云Redis企业版实例)。
如果源或目标库为自建Redis数据库或Redis社区版实例,无需传入本参数。
相关配置案例,请参见Redis企业版实例间单向/双向数据同步
OwnerId String 非服务化虚商接入时,指定资源的owner

SynchronizationObjects参数定义

SynchronizationObjects的格式为JSON字符串,且支持一定的正则表达式。

定义如下:

  1. [
  2. {
  3. "DBName":"待同步库名",
  4. "NewDBName":"待同步数据库在目标实例中映射的库名",
  5. "SchemaName":"待同步Schema名",
  6. "NewSchemaName":"待同步Schema在目标实例中映射的Schema名",
  7. "AllTable": false, //是否同步库或schema下的所有表,默认为false
  8. "TableIncludes":[
  9. {
  10. "TableName":"待同步表名",
  11. "NewTableName":"待同步表在目标实例映射的表名",
  12. "FilterCondition":"where condition",
  13. "PrimaryKey":"待同步表的主键列,多列用逗号分隔",
  14. "PartKey":"待同步表的分布列,多列用逗号分隔",
  15. "ColumnIncludes":[
  16. {
  17. "ColumnName":"待同步表中需同步列名",
  18. "NewColumnName":"待同步列在目标实例中映射的列名"
  19. }
  20. ],
  21. "ColumnExcludes":[{
  22. "ColumnName":"不需要同步的列名"
  23. }]
  24. }
  25. ],
  26. "TableExcludes":[{
  27. "TableName":"不需要同步的表名"
  28. }]
  29. }
  30. ]

如果只配置了DBName,未配置其他子对象的规则,那么将同步该库中的所有对象。

其中,

  • SchemaNameNewSchemaName参数仅适用于 SQLServer数据库,其他类型的数据库库名使用DBNameNewDBName参数。
  • PrimaryKeyPartKey参数仅适用于同步的目标实例为云原生数据仓库AnalyticDB MySQL版和云原生数据仓库 AnalyticDB PostgreSQL版,分别定义了同步表的主键列、分布列,且必须传入。

同步对象还支持如下的正则表达式:

  • 英文句号(.)表示匹配除 ‘\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. public void configureSyncJobRDS2RDS(String SyncJobId,DefaultAcsClient client) {
  2. ConfigureSynchronizationJobRequest request = new ConfigureSynchronizationJobRequest();
  3. request.setSynchronizationJobId(SyncJobId);
  4. request.setSynchronizationJobName("jiangliu_test_rds2rds_sync");
  5. request.setSourceEndpointInstanceId("rm-bp185gso372vbd1l8");
  6. request.setDestinationEndpointInstanceId("rm-bp1nx2h5fm3v6q26l");
  7. request.setStructureInitialization(true);
  8. request.setDataInitialization(true);
  9. String SyncObject="[{\"DBName\":\"jiangliutest\",\"NewDBName\":\"jiangliutest\","
  10. + "\"TableIncludes\":[{\"TableName\":\"t1\",\"NewTableName\":\"t1\"}]}]";
  11. request.setSynchronizationObjects(SyncObject);
  12. ConfigureSynchronizationJobResponse response = new ConfigureSynchronizationJobResponse();
  13. try {
  14. response = client.getAcsResponse(request);
  15. System.out.println("Configure Sync Job Succeed!");
  16. } catch (Exception e) {
  17. // TODO: handle exception
  18. System.out.println("Configure Sync Job Failed");
  19. System.out.println(e.toString());
  20. }
  21. }