更新时间: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

其他状态请参见状态码

错误码

请参见错误码