DM如何生成同步一个库的所有表的task.任务

为提高效率,提问时请尽量提供详细背景信息,问题描述清晰可优先响应。以下信息点请尽量提供:

  • 系统版本 & kernel 版本
    centos7
  • TiDB 版本
    3.0.4
  • 磁盘型号
  • 集群节点分布
  • 数据量 & region 数量 & 副本数
  • 问题描述(我做了什么)
    我的需求,把一个mysql的库下面的所有表同步实时同步到tidb中,比如现在是4张表,后面可能随时增加,我通过dm-portal生成task配置里面是写死表名了,如果我mysql里面加了表不能自动配置,有正则方式全部匹配嘛?
name: test
task-mode: all
is-sharding: false
target-database:
  host: 172.21.40.130
  port: 4000
  user: root
  password: xxxxx
mysql-instances:
- source-id: mysql-01
  meta:
    binlog-name: mysql-bin.0000001
    binlog-pos: 4
  filter-rules: []
  route-rules: []
  black-white-list: mysql-01.bw_list.1
  mydumper-config-name: mysql-01.dump
routes: {}
filters: {}
black-white-list:
  mysql-01.bw_list.1:
    do-tables: []
    do-dbs: []
    ignore-tables:
    - db-name: dmtest
      tbl-name: test
    - db-name: dmtest
      tbl-name: test1
    - db-name: dmtest
      tbl-name: test2
    - db-name: dmtest
      tbl-name: test3
    ignore-dbs: []
mydumpers:
  mysql-01.dump:
    mydumper-path: bin/mydumper
    threads: 4
    chunk-filesize: 64
    skip-tz-utc: true
    extra-args: '-T '

  • 关键词

可以使用正则方式配置的,但是需要自己手动填写配置文件,可以参考文档

https://pingcap.com/docs-cn/v3.0/reference/tools/data-migration/features/overview/#table-routing

谢谢,dm-portal有计划支持吗?

还有两个问题需要咨询下: 1、现在DM这套架构,每个角色都是单点,比如如果woker节点故障无法恢复,那这个节点上的同步任务都故障需要人为接入处理,有计划支持HA嘛 2、了解到现在MD的功能syncer基本都有,其实用syncer就好了,为啥还有整个DM,DM比syncer有啥优势哈

你好,dm-portal 生成正则的可能性不大,相当于要根据输入信息反向生成对应的匹配的正则表达式。 现在的 dm-portal 上如果勾选这个库的话,相当于下面已有的整个表做同步,如果后续新增表的话,是不会自动同步的。 这个我们考虑下怎么做区分吧,就是勾选库的情况下:

  1. 什么时候是选择库下所有的表(但不包含后续新增的表)
  2. 什么时候是选择整个库(包含后续新增的表)

你好,先简单讲一下 DM 对 syncer 比较大的一个优势是在于 sharding ddl 机制:https://pingcap.com/docs-cn/v3.0/reference/tools/data-migration/features/shard-merge/ 如果上游是分库分表中间件的话,用 DM 同步的话会自动协调各分片之间的 ddl,保证同步一次 ddl 到下游的合表中。这个是 sycner 没有的,如果用 syncer 的话,每个分片都会同步一次 ddl, 同步会中断掉。

方便介绍下您这边使用 DM 的场景嘛?另外对同步连续性的要求是怎么样的。大部分同步都不太有 HA 的架构,主要是因为多副本的话成本会高而且对上游也有压力。这块可以详细聊下,我们也想收集下实际场景。

我们这的使用tidb的场景是这样的: 业务没有涉及分库分表,业务写mysql,会有多个业务库,我们把这些业务库实时同步到tidb集群中,一些读场景就切到tidb上,做多库的关联查询,其实就是写mysql,读tidb,所以我现在在选择同步工具,我们这没有sharding,其实我用sycner就够, 用DM反而复杂了,帮忙给点建议

那用 DM 和 Syncer 都可以的。 DM 对异常场景下作的重试机制比较全面一点:比如上下游网络抖动,上下游数据库链接异常。 用 syncer 的话这些场景会同步中断的,一般都会搞个脚本断的时候重新拖起来。 其实复杂度差不多,DM 的复杂度在于部署和使用上,syncer 的复杂度在日常运维上。

此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。