DTS支持调用API接口,配置或查询DTS任务的迁移、同步或订阅对象。本文将为您介绍相关API接口,并提供对象的定义和配置案例。

相关接口及参数

API 说明
在请求参数Dblist中配置DTS任务的迁移、同步或订阅的对象。
在返回参数DbObject中查询DTS任务的迁移、同步或订阅的对象。

迁移、同步或订阅对象定义说明

迁移、同步或订阅对象的数据类型为JSON,详细定义如下:

说明 请按需配置斜体部分的内容。
  • 如迁移、同步或订阅对象包含多个库,则您可参考如下定义:
    {
        "待迁移、同步或订阅的库1的名称": {
            "name": "迁移、同步或订阅的库1在目标实例中的名称",
            "all": true(表示迁移、同步或订阅对象为整库)
        },
        "待迁移、同步或订阅的库2的名称": {
            "name": "迁移、同步或订阅的库2在目标实例中的名称",
            "all": false(表示迁移、同步或订阅对象为非整库),
            "Table": {
                "待迁移、同步或订阅的表A的名称": {
                    "name": "迁移、同步或订阅的表A在目标实例中的名称",
                    "all": true(表示迁移、同步或订阅对象为整表),
                    "dml_op": "需增量迁移或同步的DML操作",
                    "ddl_op": "需增量迁移或同步的DDL操作"
                }
            }
        },
        "待迁移、同步或订阅的库3的名称": {
            "name": "迁移、同步或订阅的库3在目标实例中的名称",
            "all": true(表示迁移、同步或订阅对象为整库),
            "dml_op": "需增量迁移或同步的DML操作",
            "ddl_op": "需增量迁移或同步的DDL操作"
        }
    }
  • 如迁移、同步或订阅对象的颗粒度为列,或者包含过滤条件,则您可参考如下定义:
    {
        "待迁移、同步或订阅的库名": {
            "name": "迁移、同步或订阅的库在目标实例中的库名",
            "all": false(表示迁移、同步或订阅对象为非整库),
            "Table": {
                "待迁移、同步或订阅的表名A": {
                    "name": "迁移、同步或订阅的表在目标实例中的表名A",
                    "all": false(表示迁移、同步或订阅对象为非整表),
                    "filter": "id>10"
                    "column": {
                        "id": {
                            "key": "PRI",
                            "name": "id",
                            "type": "int(11)",
                            "sharedKey": false,
                            "state": "checked"
                        }
                    },
                    "shard": 12
                }
            },
        }
    }
  • 如迁移、同步对象所属目标实例为云原生数据仓库AnalyticDB MySQL版AnalyticDB PostgreSQL时,则您可参考如下定义:
    {
        "待迁移、同步的库的名称": {
            "name": "迁移、同步的库在目标实例中的名称",
            "all": false(固定为false。无论是对象为整库还是表级,如目标实例为AnalyticDB MySQL或AnalyticDB PostgreSQL,固定传入false,且还需传入表对应的分区键等信息),
            "Table": {
                "待迁移、同步的表A的名称": {
                    "all": true(表示迁移、同步对象为整表),
                    "name": "迁移、同步的表A在目标实例中的名称",
                    "primary_key": "id(指定主键)",
                    "type": "dimension(表的类型)",
                }
                "待迁移、同步的表B的名称": {
                    "all": true(表示迁移、同步对象为整表),
                    "name": "迁移、同步的表B在目标实例中的名称",
                    "part_key": "id(指定分区键)",
                    "primary_key": "id(指定主键)",
                    "type": "partition(表的类型)",
                }
            }
        }
    }
参数 说明
name 源库、表、列名映射到目标库、表、列的名称。如源库名为dtssource,目标库名为dtstarget,则您需在name中传入dtstarget,表示把源库名映射成dtstarget后写入目标库中。
all 是否选择全部表、列,取值:
  • true:是。
    说明 如选择全部表或列,则无需在配置具体的表或列信息。
  • false:否。
Table 待迁移、同步或订阅的表信息。
filter 设置过滤条件,过滤待迁移、同步或订阅的数据。目前仅支持在表级别中体现。
例如您可传入id>10,选择只迁移、同步该表中ID列的值大于10的数据。更多过滤条件的格式,请参见通过SQL条件过滤任务数据
说明 订阅任务暂不支持设置过滤条件。
column 待迁移、同步或订阅的列信息。
key 是否为主键,取值:
  • PRI:是。
  • 空值:否。
sharedKey 是否为分片键,取值:
  • true:是。
  • false:否。
说明 当迁移、同步对象所属数据库的类型为Kafka时,才需配置本参数。
type 该字段的数据类型。
state 如为checked,则表示该列被选中。
shard 待迁移、同步的表的分片数量。
说明 当迁移、同步数据所属数据库的类型为Kafka时,才需配置本参数。
dml_op 选择增量迁移或同步的DML操作,取值及意思如下:
  • i:INSERT。
  • u:UPDATE。
  • d:DELETE。
  • 如该值为空,则表示增量迁移或同步该任务所有支持的DML操作。
  • none:不增量迁移或同步DML操作。
说明 如需查询不同迁移或同步任务支持的DML操作,请参见DTS数据迁移方案概览DTS数据同步方案概览中具体任务的配置文档。
ddl_op 选择增量迁移或同步的DDL操作。取值及意思如下:
  • ct:CREATE TABLE。
  • at:ALTER TABLE。
  • dt:DROP TABLE。
  • rt:RENAME TABLE。
  • tt:TRUNCATE TABLE。
  • 如该值为空,则表示增量迁移或同步该任务所有支持的DDL操作。
  • none:不增量迁移或同步DDL操作。
说明 如需查询不同迁移或同步任务支持的DDL操作,请参见DTS数据迁移方案概览DTS数据同步方案概览中具体任务的配置文档。
primary_key 表示主键。当目标实例为云原生数据仓库AnalyticDB MySQL版AnalyticDB PostgreSQL时,本参数才可用且必须传入。
part_key 表示分区键。当目标实例为云原生数据仓库AnalyticDB MySQL版AnalyticDB PostgreSQL时,本参数才可用且必须传入。
type
注意 此处的type参数与代表字段数据类型的type参数。
当目标实例为云原生数据仓库AnalyticDB MySQL版AnalyticDB PostgreSQL时,您需要指明迁移、同步对象的表类型:
  • dimension:维度表。
  • partition:分区表。

迁移、同步或订阅对象配置示例

  • 示例一:迁移、同步或订阅dtstestdata库中所有的表。
    {"dtstestdata": {   "name": "dtstestdata",   "all": true }}
  • 示例二:迁移、同步或订阅dtstestdata库,并修改库名为dtstestdata_new。
    {"dtstestdata": {   "name": "dtstestdata_new",   "all": true }}
  • 示例三:迁移、同步或订阅dtstestdata库中部分表(如customer)。
    {"dtstestdata": {
       "name": "dtstestdata",
       "all": false,
       "Table": {
         "customer": {
           "name": "customer",
           "all": true, 
           "column": { 
             "id": {
               "key": "PRI",
               "name": "id",
               "type": "int(11)",
               "sharedKey": false,
               "state": "checked"  
             },
             "gmt_create": {
               "key": "",
               "name": "gmt_create",
               "type": "datetime",
               "sharedKey": false,
               "state": "checked"
             },
             "gmt_modify": {
               "key": "",
               "name": "gmt_modify",
               "type": "datetime",
               "sharedKey": false,
               "state": "checked"
             },
             "valid_time": {
               "key": "",
               "name": "valid_time",
               "type": "datetime",
               "sharedKey": false,
               "state": "checked"
             },
             "creator": {
               "key": "",
               "name": "creator",
               "type": "varchar(200)",
               "sharedKey": false,
               "state": "checked"
             }
           },
           "shard": 12
         }
       },
     }
    }
  • 示例四:迁移、同步或订阅dtstestdata库中的表(如customer和order)的部分列。
    {"dtstestdata": {
       "name": "dtstestdata",
       "all": false,
       "Table": {
         "customer": {
           "name": "customer",
           "all": false, 
           "column": { 
             "id": {
               "key": "PRI",
               "name": "id",
               "type": "int(11)",
               "sharedKey": false,
               "state": "checked"  
             },
             "level": {
               "key": "",
               "name": "level",
               "type": "varchar(5000)",
               "sharedKey": false,
               "state": "checked"
             },
             "name": {
               "key": "",
               "name": "name",
               "type": "varchar(500)",
               "sharedKey": false,
               "state": "checked"
             },
           },
           "shard": 12
         },
         "order": {
           "name": "order",
           "all": false,
          "column": {
             "id": {
               "key": "PRI",
               "name": "id",
               "type": "int(11)",
               "sharedKey": false,
               "state": "checked"
             }
           },
           "shard": 12
         }
       },
     }
    }
  • 示例五:迁移、同步或订阅dtstestdata库中的表(如customer、order、commodity)至目标实例云原生数据仓库AnalyticDB MySQL版AnalyticDB PostgreSQL中。
    {
        "dtstestdata": {
            "name": "dtstestdatanew",
            "all": false,
            "Table": {
                "order": {
                    "name": "ordernew",
                    "all": true,
                    "part_key": "id",
                    "primary_key": "id",
                    "type": "partition"
                },
                "customer": {
                    "name": "customernew",
                    "all": true,
                    "primary_key": "id",
                    "type": "dimension"
                },
                "commodity": {
                    "name": "commoditynew",
                    "all": false,
                    "filter": "id>10",
                    "column": {
                        "id": {
                            "key": "PRI",
                            "name": "id",
                            "type": "int(11)"
                        }
                    },
                    "part_key": "id",
                    "primary_key": "id",
                    "type": "partition"
                }
            }
        }
    }

支持的正则表达式

符号 规则描述
英文句号(.) 表示匹配除‘\r\n’之外的任何单个字符。
星号(*) 表示匹配前面子表达式任意次,例如:h.*llo将匹配 hllo或heeeello等字符串。
英文问号(?) 表示匹配前面子表达式零次或1次,例如:h.?llo将匹配hllo或hello,但不能匹配haello。
[characters] 字符集合 表示匹配方括号内任意一个字符,例如:h[ae]llo将匹配hallo或hello。
[^characters] 负值字符集合 表示不匹配方括号内任意一个字符,例如:h[^ae]llo将匹配hcllo或hdllo,但不能匹配hallo或hello。
[character1-character2] 字符范围 表示匹配character1-character2范围内的字符,例如: [0-9]、[a-z]。