分表合并

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

  • 系统版本 & kernel 版本】centos7
  • TiDB 版本】3.0.2
  • 磁盘型号】ssd
  • 集群节点分布】3PD,3TIKV,2TIDB
  • 数据量 & region 数量 & 副本数】5万多
  • 问题描述(我做了什么)】上游MySQL实例中,user_account库中,有3种类型的大表user、user_map、user_add。各拆分了50个,user表拆成50个表user_001-user_050 、use_map表拆成user_map_001-user_map_050、user_add表拆成user_add_001-user_add_050,然后再将每种类型的分表,在合并同步到下游tidb中,这种分表合并,并且在同一个库中,需要怎么配置呢?
  • 关键词

你好: mysql同一个库中,有不同的表,需要同步到下游tidb中的同一个表中,对吧? 可以使用DM,配置即可,请参考文档

按照官方的配置了,查看的结果就是原方不动把数据迁移过来了,并没有进行合表啊,我哪里配置的有问题呢 image

这是 部分 task 还是 所有的配置呢 ? 看起来是因为 配置 routes,但是 下面被注视掉 导致的。

route-rules:[“route-rule-1”,“route-rule-2”,“route-rule-3”,“route-rule-4”]

task部分,下面注释的是我注释,那会启动的时候报错,说是重复配置,就把它注释了,目前没有配置过滤的功能,只是做合表的操作

辛苦发下 task 全部信息,可以将敏感信息过滤掉。当前信息比较少,routes 规则配置看起来是没有问题的。像是没有设置 route-rules 规则导致原封不动的数据迁移。

image 多谢 辛苦~~~:grimacing:

mysql-instances:下面的 route-rules 注释去掉,另外修改成下面的内容,重新导入试下?

补充一下,如果觉得配置文件比较复杂,可以尝试使用 DM Portal 生成~

报错了

看报错是 格式问题,检查一下空格或者缩进问题。

需要配置column mapping,这个是在task.yaml文件的哪个位置配置呢

column-mapping 配置可参考官方文档,有详细说明,https://pingcap.com/docs-cn/v2.1/reference/tools/data-migration/features/overview/#binlog-event-filter

另外分库分表合并我们推荐使用以下方式,不推荐使用 column-mapping:

官方推荐的方式我们这不符合,文档我看了,不知道这个 column mapping.写在task文件中哪个位置,官方文档只是配置说明,我是在这里追加的

方式和 route-rules 类似的。配置好规则之后,在 对应的 mysql-instances 下面配置

举例:column-mapping-rules: [“instance-1”]