孤君888
1
【TiDB 使用环境】
生产环境
【TiDB 版本】
v8.5.1
【操作系统】
【部署方式】云上部署(什么云)/机器部署(什么机器配置、什么硬盘)
【集群数据量】
【集群节点数】
【问题复现路径】做过哪些操作出现的问题
【遇到的问题:问题现象及影响】
我的上游是MYSQL8.0.23,有一些表带外键约束,现在通过DM同步到下游TIDB,发现在上游父表删除了数据,TIDB这边子表并没有级联删除掉,我如何解决这个问题?我是希望上游MYSQL和下游TIDB保持实时同步的
补充任务配置:
我的步骤:
1、使用dumpling导出上游库
2、使用lightning导入到下游TIDB库(导入之前删除了zltest.a2子表的外键约束)
3、启动任务开始同步
【资源配置】进入到 TiDB Dashboard -集群信息 (Cluster Info) -主机(Hosts) 截图此页面
【复制黏贴 ERROR 报错的日志】
【其他附件:截图/日志/监控】
孤君888
3
无法在上游源头库删除掉外检约束,我在找有什么方法可以绕开
我只能想个笨一点的方法,自己写个脚本去删下游外键没有级联删掉的数据
1 个赞
dba-kit
(张天师)
5
你的 DM 任务没有同步子表么? MySQL的 row 格式保证即便是通过外键约束删除的子表,这个删除也会产生 DELETE 类型的 BINLOG EVENT 的
孤君888
6
发现上游MYSQL8通过外键级联删除的数据并不会记录BINLOG事件,,所以导致DM获取不到对应BINLOG进而导致TIDB下游数据不一致
dba-kit
(张天师)
7
上游 MySQL8的 binlog 格式是什么? 是row 还是mixed 啊?
dba-kit
(张天师)
8
不过貌似 mixed 的级联删除,也是会被记录成 ROW 格式的,那就太奇怪了。。。
孤君888
9
我上游不可能改为MIX的,都是用ROW的,另外原文链接可以发下吗?
乡在人间
(Ti D Ber Ki Nyc B Fs)
10
tidb本来就不兼容外键约束,只能自己想办法绕过去实现了。。。
孤君888
11
是DM数据迁移工具不支持,本身TIDB高版本(v8.5.1)是支持的。本质上就是DM和TIDB 对外键约束的行为不一致
WalterWj
(王军 - PingCAP)
12
ROW 格式
会记录所有被更改的行——包括主表的删除以及因外键约束被自动删除的子表中的所有记录。所有受影响的行都会被单独写入 binlog。
你是不是有做过滤?