dm工具 task 任务如何编写

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。

  • 【TiDB 版本】:tidb 4.0.dm2.0rc
  • 【问题描述】:使用dm工具,将mysql中的分库分表数据合并同步到tidb中,看了教程文档中的表同步例子,只是 分库分表的,比较简单,单个的,如果一个实例中既有分库分表,又有单库单表,这个dm.task_yaml怎么编写,有没有相关例子提供参考

若提问为性能优化、故障排查类问题,请下载脚本运行。终端输出的打印结果,请务必全选并复制粘贴上传。

需求描述的不是很清楚,因为上游的 MySQL 实例下面的既有分库分表,又有单库单表,因为又是不同的同步策略,需要启动两个 task 任务来完成同步。而不是通过一个 task 任务完成,这样运维起来比较复杂。完全可以把单库单表同步和合库合表任务设置为两个 task 任务来配置。

具体的配置操作可以参考一下 TiDB DM 的场景文档,里面有对应的需求和配置策略。如果更详细的配置任务需求,可以自己先遍及一下 task 配置文件,然后一起讨论一下。 AskTUG 里面还有其他的同学的是 Task 任务配置案例,可以查看参考一下。

我的一个实例里面有db1,db2,db3,dbtest1,dbdev5个库,其中db1,db2,db3是分库,三个分库中都含有test1,test2,test3三张分表,还有非分表 testname,custer_info 两张表,dbtest1,dbdev 两个 库是没有分库也没有分表的, 需要将分库分表中的数据合并后同步到tidb中,没有分库分表的数据不做任何操作同步到tidb中。类似这个场景表路由规则怎么写,routes:
##分库分表中的路由规则配置
route-rule-1:
schema-pattern: “db*” ,“devtest”,“dbtest”
table-pattern: “test*”,“testname”,“custer_info”
target-schema: “db”
target-table: “test*”,“testname”,“custer_info”
route-rule-2:
schema-pattern: “db*”,“devtest”,“dbtest”
target-schema: “db”,“devtest”,“dbtest”

没有分库分表的数据同步到 tidb 中,直接配置需要同步的库表同步到下游就可以了。可以参考下基本配置模版:dm/dm/dm-ansible/conf/task_basic.yaml.example at master · pingcap/dm · GitHub

有分库分表的数据同步到下游 tidb 中,如果有 ddl 操作,是需要做 sharding ddl 的,可以参考下这个配置模版:dm/dm/dm-ansible/conf/task_advanced.yaml.example at master · pingcap/dm · GitHub

注意下,分库分表合并的场景中,is-sharding: true 需要设置为 true

好的,感谢

好的,可以根据自己部署的版本,选择对应版本的模版进行配置哈。