文档首页/ 数据复制服务 DRS/ API参考/ 历史API/ API v3/ 实时同步管理/ 批量设置同步策略 - BatchSetPolicy
更新时间:2026-07-29 GMT+08:00

批量设置同步策略 - BatchSetPolicy

功能介绍

  • 批量设置同步策略,包括冲突策略、过滤DROP Database、对象同步范围。
  • 设置kafka同步策略

调试

您可以在API Explorer中调试该接口,支持自动认证鉴权。API Explorer可以自动生成SDK代码示例,并提供SDK代码示例调试功能。

接口约束

  • 任务创建成功之后,任务状态为CONFIGURATION,并且与源库和目标库测试连接通过、修改任务接口调用成功后才能调用。
  • 支持设置Kafka同步策略的有:PostgreSQL-Kafka同步,Oracle-Kafka同步,GaussDB-Kafka同步,TaurusDB-Kafka,MySQL-Kafka。
  • TaurusDB-Kafka,MySQL-Kafka支持任务状态为INCRE_TRANSFER_STARTED时修改Kafka策略配置,修改配置后需等任务状态为INCRE_TRANSFER_STARTED时再进行编辑同步对象操作。

授权信息

账号具备所有API的调用权限,如果使用账号下的IAM用户调用当前API,该IAM用户需具备调用API所需的权限,具体权限要求请参见权限和授权项。

URI

POST /v3/{project_id}/jobs/batch-sync-policy

表1 路径参数

参数

是否必选

参数类型

描述

project_id

是

String

参数解释:

租户在某一Region下的Project ID。

获取方法请参见获取项目ID。

约束限制:

不涉及。

取值范围:

不涉及。

默认取值:

不涉及。

请求参数

表2 请求Header参数

参数

是否必选

参数类型

描述

Content-Type

是

String

参数解释:

发送的实体的MIME类型。推荐用户默认使用application/json,如果API是对象、镜像上传等接口,媒体类型可按照流类型的不同进行确定。

约束限制:

不涉及。

取值范围:

application/json

默认取值:

application/json

X-Auth-Token

是

String

参数解释:

从IAM服务获取的用户Token。 用户Token也就是调用获取用户Token接口的响应值,该接口是唯一不需要认证的接口。 请求响应成功后在响应消息头中包含的“X-Subject-Token”的值即为Token值。

约束限制:

不涉及。

取值范围:

不涉及。

默认取值:

不涉及。

X-Language

否

String

参数解释:

请求语言类型。

约束限制:

不涉及。

取值范围:

  • en-us:英语
  • zh-cn:中文

默认取值:

en-us

表3 请求Body参数

参数

是否必选

参数类型

描述

jobs

是

Array of objects

参数解释:

批量设置同步策略请求列表,包含需要设置策略的同步任务信息。

详情请参见表4。

表4 jobs字段数据结构说明

参数

是否必选

参数类型

描述

job_id

是

String

参数解释:

同步任务ID,用于唯一标识一个数据复制任务,在批量设置同步策略时指定需要设置策略的任务。

约束限制:

不涉及。

取值范围:

不涉及。

默认取值:

不涉及。

conflict_policy

否

String

参数解释:

数据迁移过程中的冲突策略,指定当目标库已存在相同数据时的处理方式。

约束限制:

不涉及。

取值范围:

  • ignore:冲突忽略,跳过冲突数据继续迁移。
  • overwrite:冲突覆盖,用源库数据覆盖目标库已有数据。
  • stop:冲突失败,遇到冲突时停止任务。

默认取值:

不涉及。

filter_ddl_policy

否

String

参数解释:

过滤DDL策略,指定增量同步过程中需要过滤的DDL操作类型。

约束限制:

不涉及。

取值范围:

drop_database:过滤DROP DATABASE操作。

默认取值:

不涉及。

ddl_trans

否

Boolean

参数解释:

同步增量是否同步DDL,指定增量同步阶段是否将源库的DDL操作同步到目标库。

约束限制:

不涉及。

取值范围:

  • true:同步增量时同步DDL。

  • false:同步增量时不同步DDL。

默认取值:

不涉及。

index_trans

否

Boolean

参数解释:

同步增量是否同步索引,指定增量同步阶段是否将源库的索引变更同步到目标库。

约束限制:

不涉及。

取值范围:

  • true:同步增量时同步索引。

  • false:同步增量时不同步索引。

默认取值:

不涉及。

topic_policy

否

String

参数解释:

同步Topic策略,指定Kafka目标库的Topic生成方式

约束限制:

  • 目标库为Kafka时必填。

  • 不同引擎类型支持的取值范围不同,详见取值范围说明。

取值范围:

GaussDB分布式版到Kafka同步取值:

  • 0:集中投递到一个Topic。
  • 1:按库名-schema-表名自动生成Topic名字。
  • 2:按库名自动生成Topic名字。
  • 3:按库名-schema自动生成Topic名字。
  • 4:按库名-dn序号自动生成Topic名字。

GaussDB集中式版到Kafka同步、PostgreSQL到Kafka同步取值:

  • 0:集中投递到一个Topic。
  • 1:按库名-schema-表名自动生成Topic名字。
  • 2:按库名自动生成Topic名字。
  • 3:按库名-schema自动生成Topic名字。

Oracle到Kafka同步取值:

  • 0:集中投递到一个Topic。
  • 1:按schema-表名自动生成Topic。
  • 3:按schema自动生成Topic。

MySQL到Kafka同步取值:

  • 0:集中投递到一个Topic。
  • 1:自动生成Topic。

TaurusDB到Kafka同步取值:

  • 0:集中投递到一个Topic。
  • 1:自动生成Topic。

默认取值:

不涉及。

topic

否

String

参数解释:

Kafka Topic名称,指定同步数据投递的目标Topic。

约束限制:

  • topic_policy为0时必填。
  • 确保topic已存在。

取值范围:

不涉及。

默认取值:

不涉及。

partition_policy

否

String

参数解释:

同步到kafka partition策略,指定数据投递到Kafka分区的方式。

约束限制:

  • 目标库为Kafka时必填。
  • partition_policy的可选取值受topic_policy约束:
    • 当topic_policy取0时可取0、1、2、3、4、5;

    • 当topic_policy取1时可取0、1、2、5;

    • 当topic_policy取2时partition_policy只支持0、1、2、3,gaussdbv5ha是0、1、2、3,gaussdbv5是0、1、3;

    • 当topic_policy取3时可取0、1;当topic_policy取4时可取0、1、3。

  • 不同链路topic_policy不同,partition_policy取值总结如下:
    • gaussv5-kafka:根据topic_policy,partition_policy可取0、1、2、3、4、5
    • gaussv5ha-kafka:根据topic_policy,partition_policy可取0、1、2、3、5
    • taurus-kafka:根据topic_policy,partition_policy可取0、2
    • mysql-kafka:根据topic_policy,partition_policy可取0、1、2
    • oracle-kafka:根据topic_policy,partition_policy可取0、1、2、3

取值范围:

  • 0:按库名.schema.表名的hash值投递到不同Partition。
  • 1:全部投递到Partition 0。
  • 2:按主键的hash值投递到不同Partition。
  • 3:按库名.schema的hash值投递到不同Partition。
  • 4: 按库名.dn序号的hash值投递到不同Partition(仅GaussDB分布式版到Kafka支持选择)。
  • 5:按非主键列的hash值投递到不同Partition。

默认取值:

不涉及。

kafka_data_format

否

String

参数解释:

投送到kafka的数据格式,指定同步到Kafka的数据序列化方式。

约束限制:

  • MySQL到Kafka增量同步支持avro、json和json_c。

  • TaurusDB到Kafka同步支持json和json_c。

  • 其他引擎支持json和avro。

取值范围:

  • json:为JSON消息格式,方便解释格式,但需要占用更多的空间。
  • avro:可以显示Avro二进制编码,高效获取数据。
  • json_c:一种能够兼容多个批量,流式计算框架的数据格式。

默认取值:

json。

topic_name_format

否

String

参数解释:

Topic名字格式,指定自动生成Topic名称时使用的命名模板。

约束限制:

topic_policy为1,2,3,时需要填写。

PostgreSQL到Kafka同步、GaussDB集中式版到Kafka同步取值:

  • 当topic_policy取1时,Topic名字格式支持database、schema两个变量,其他字符当做常量。分别用$database$代替数据库名,$schema$代替模式名,不填默认为$database$-$schema$。
  • 当topic_policy取2时,Topic名字格式支持database一个变量,其他字符都当做常量,不填默认为$database$
  • 当topic_policy取3时,Topic名字格式支持database、schema和tablename三个变量,其他字符当做常量。分别用$database$代替数据库名,$schema$代替模式名,$tablename$代替表名,不填默认为$database$-$schema$-$tablename$。

Oracle到Kafka同步取值:

  • 当topic_policy取1时,Topic名字格式支持schema和tablename两个变量,其他字符都当做常量。分别用$schema$代替模式名,$tablename$代替表名。不填默认为$schema$-$tablename$。
  • 当topic_policy取3时,Topic名字格式支持schema变量,其他字符都当做常量。用$schema$代替模式名。不填默认为$schema$。

MySQL到Kafka、TaurusDB到Kafka同步取值:

  • 当topic_policy取1时,Topic名字格式支持database和tablename两个变量,其他字符都当做常量。分别用$database$代替数据库名,$tablename$代替表名。不填默认为$database$-$tablename$。

取值范围:

不涉及。

默认取值:

不涉及。

partitions_num

否

String

参数解释:

Partition个数,指定Kafka Topic的分区数量。

约束限制:

  • topic_policy为1、2、3时需要填写。

取值范围:

1-2147483647

默认取值:

1

replication_factor

否

String

参数解释:

副本个数,指定Kafka Topic的副本数量。

约束限制:

  • topic_policy为1、2、3时需要填写。

取值范围:

1-32767

默认取值:

1

is_fill_materialized_view

否

Boolean

参数解释:

PostgreSQL全量阶段是否填充物化视图,指定全量同步时是否将源库物化视图的数据填充到目标库。

约束限制:

不涉及。

取值范围:

  • true:填充物化视图

  • false:不填充物化视图

默认取值:

false

export_snapshot

否

Boolean

参数解释:

PostgreSQL全量阶段是否使用快照模式导出,指定全量同步时是否采用快照方式导出源库数据。

约束限制:

不涉及。

取值范围:

  • true:使用快照模式导出

  • false:不使用快照模式导出

默认取值:

false

slot_name

否

String

参数解释:

复制槽名称,指定PostgreSQL逻辑复制的复制槽标识。

约束限制:

  • gaussdbv5ha-to-kafka主备任务必填。
  • PostgreSQL为源的单增量同步任务选填。

取值范围:

不涉及。

默认取值:

不涉及。

file_and_position

否

String

参数解释:

源库日志位点,指定增量同步的起始位点。

约束限制:

  • MySQL为源通过show master status命令获取源库位点,根据提示分别填写File:Position。例如:mysql-bin.000277:805。文件名只能为1-60个字符且不能包含< > & : " ' / \\ 特殊字符,文件编号只能为3-20个数字,binlog事件位置只能为1-20个数字,且总长度不能超过100个字符。格式为:文件名.文件编号:事件位点。
  • MongoDB为源的任务,任务的源库日志从位点开始获取(含当前启动位点),位点需设置在oplog范围以内。非集群通过db.getReplicationInfo()直接获得oplog范围,集群通过db.watch([], {startAtOperationTime: Timestamp(xx, xx)})命令,将启动位点填在xx处,校验位点是否在oplog范围以内。格式为:timestamp:incre。timestamp和incre均为范围在1~2,147,483,647之间的整数。

取值范围:

不涉及。

默认取值:

不涉及。

gtid_set

否

String

参数解释:

MySQL GTID集合,指定增量同步的GTID起始位点。

约束限制:

  • MySQL为源的任务需要填写。通过show master status命令获取源库位点,根据提示填写Executed_Gtid_Set。
  • 如果源库为MySQL 5.5版本,则不支持使用同步任务。
  • 不能包含< > & " ' / \\ 特殊字符和中文,且不能超过2048个字符。

取值范围:

不涉及。

默认取值:

不涉及。

ddl_topic

否

String

参数解释:

存储DDL的topic,指定DDL操作数据投递的目标Topic。

约束限制:

  • Kafka为目标且ddl_trans为true时必填。
  • 取值必须为目标库已存在的topic名称,确保topic已存在。

取值范围:

不涉及。

默认取值:

不涉及。

响应参数

状态码:200

表5 响应Body参数

参数

参数类型

描述

count

Integer

参数解释:

返回的任务信息总数,表示本次查询成功返回的任务数量,与results数组的长度一致。

约束限制:

不涉及。

取值范围:

不涉及。

results

Array of objects

参数解释:

批量设置同步策略返回列表。

详情请参见表6。

表6 results字段数据结构说明

参数

参数类型

描述

id

String

参数解释:

设置同步策略的任务ID,用于标识策略设置结果对应的任务。

约束限制:

不涉及。

取值范围:

不涉及。

status

String

参数解释:

策略设置结果状态,表示同步策略是否设置成功。

约束限制:

不涉及。

取值范围:

  • success:成功。
  • failed:失败。

error_code

String

参数解释:

错误码,当任务报错时返回的错误代码。

约束限制:

不涉及。

取值范围:

格式为DRS.XXXXXX。

error_msg

String

参数解释:

错误详细信息,当任务执行失败时返回的具体错误描述。

约束限制:

不涉及。

取值范围:

不涉及。

请求示例

  • 批量设置同步任务策略,其中增量冲突策略为忽略,同步增量DDL并过滤drop_database操作
    https://{endpoint}/v3/054ba152d480d55b2f5dc0069e7ddef0/jobs/batch-sync-policy
    
    {
        "jobs": [{
    	"conflict_policy": "ignore",
    	"ddl_trans": true,
    	"filter_ddl_policy": "drop_database",
    	"index_trans": true,
    	"job_id": "19557d51-1ee6-4507-97a6-8f69164jb201"
        }]
    }
  • 批量设置MySQL单增量同步任务策略示例:
    https://{endpoint}/v3/054ba152d480d55b2f5dc0069e7ddef0/jobs/batch-sync-policy 
      
     { 
       "jobs": [ 
         { 
           "conflict_policy": "ignore", 
           "ddl_trans": true, 
           "filter_ddl_policy": "drop_database", 
           "index_trans": true, 
           "job_id": "19557d51-1ee6-4507-97a6-8f69164jb201",
           "file_and_position": "mysql-bin.000019:197", 
           "gtid_set":"e4979f26-4bc3-11ee-b279-fa163ef21d64:1-23" 
         } 
       ] 
     }

响应示例

状态码:200

OK

{
  "results" : [ {
    "id" : "19557d51-1ee6-4507-97a6-8f69164jb201",
    "status" : "success"
  } ],
  "count" : 1
}

状态码

状态码

描述

200

OK

400

Bad Request

其他状态请参见状态码。

错误码

请参见错误码。