MyronWang
(Myron Wang)
1
为提高效率,请提供以下信息,问题描述清晰能够更快得到解决:
【TiDB 版本】
MySQL Server version: 5.7.22-log MySQL Community Server (GPL)
tidb: v4.0.11
dm: v2.0.1
【问题描述】
需求:
TiDB作为MySQL的从库,使用DM迁移任务完成。因为业务需要,研发会在TiDB从库创建一些表,这些表的数据要保留。这样TiDB上就有了MySQL主库的数据 + 研发自建的数据。
然而,目前TiDB有部分DDL语句不支持,会导致DM同步中断,这时候,我们需要重新同步MySQL数据到TiDB(全量+增量方式),这时,必须先删除TiDB中已存在的数据(MySQL部分);否则无法正常同步(比如主键冲突等)。
这就有两种处理方式:1)手动删除TiDB中MySQL数据部分,保留研发自建部分。2)如果dump语句有“DROP table IF EXISTS table_name”这样的子句(dump文件如上图),就无需先手动删除了,直接重新同步即可。
请问,DM task 的配置文件中,是否有支持此功能的配置项?(我查看[https://docs.pingcap.com/zh/tidb-data-migration/stable/task-configuration-file-full#完整配置文件示例]没找到)
烦请指导,谢谢。
小王同学
2
这道题我不会
(Lizhengyang@PingCAP)
3
MyronWang
(Myron Wang)
4
嗯,目前如果出现个别DDL导致的同步异常,的确是使用 handle-error 处理的。
但是,我们研发库会有大量DDL更新,而且还会遇到 insert 语句、key重复等导致同步异常的情况,而这些情况如果时时关注,并且使用上述方式处理,太耗时间与人力成本。通常我们是每天下班后重新跑一次同步解决。(非生产环境)
再加上,我们版本迭代比较快,每个大版本都会有大量DDL语句,而像数据类型的修改,还是比较常见;TiDB从库数量也有近50个左右,所以像这种“大改动”,我们倾向于重新同步解决。这种重新同步,虽然不是天天有,但是每月肯定有个一两次。(生产环境)
如上,所以我才想确认下是否有支持此功能的配置项。
MyronWang
(Myron Wang)
5
嗯,谢谢。这个处理方式我知晓。具体回复请见上楼回复。
小王同学
6
MyronWang
(Myron Wang)
7
好的,感谢。这个我了解下。
请问,我帖子提到的问题呢,是否支持?
问题:全量同步时,dump阶段生成的SQL文件,是否可以多一行“DROP table IF EXISTS table_name”这
样的子句。
也就是,创建表前,若表存在则先删除之。是否有选项支持开启此功能?
MyronWang
(Myron Wang)
9
好的,感谢解答。
那我就只能写脚本实现先删除数据表了。
MyronWang
(Myron Wang)
关闭
10
此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。