ticdc 5.0 版本按官方文档看,应该是默认old value 模式了,但我试了下 update 还是被转成了 delete+insert
创建 ticdc 任务:
这里未指定
safe-mode=false
下游 MySQL 打出的 binlog:
我理解,如果 old value 生效的话,tidb 执行 update 语句,同步到 MySQL 端应该也是 update 把。
ticdc 5.0 版本按官方文档看,应该是默认old value 模式了,但我试了下 update 还是被转成了 delete+insert
创建 ticdc 任务:
safe-mode=false
下游 MySQL 打出的 binlog:
我理解,如果 old value 生效的话,tidb 执行 update 语句,同步到 MySQL 端应该也是 update 把。
指定下 safe-mode 在试试~
等你的测试结果
创建任务指定 safe_mode: --sink-uri="mysql://root:mysql@xxx:3306/?time-zone=&safe-mode=false"
下游 binlog 正常输出 update 了
5.1 的 CDC方案看来可用阿~
多测测~
【 Bug 的影响】
ticdc 5.0 没有默认开启 old vaule 模式
【可能的问题复现步骤】
创建任务命令:
tiup ctl:v5.0.2 cdc changefeed create --pd=http://172.26.55.91:2379 --sink-uri="mysql://root:mysql@XXXX:3306/?time-zone=" --changefeed-id="dev-task"
【看到的非预期行为】
默认创建的任务,还是会把update转成delete+insert
【期望看到的行为】
默认使用old value
【相关组件及具体版本】
tidb5.0.2 版本
【其他背景信息或者截图】
下游binlog截图在楼上
5.0 默认是开启 old value,只是在开启 old value 后,为了保证数据同步的可重入,SQL 的转化逻辑根据 safe mode 不同也是有区分的 https://github.com/pingcap/ticdc/pull/955
了解了,所以要想原封不动的同步sql,需要默认 old value 再加上指定 safe-mode=false 是吧,谢谢大佬答疑
此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。