db_user
(Db User)
1
为提高效率,请提供以下信息,问题描述清晰能够更快得到解决:
【 TiDB 使用环境】
linux
【概述】 场景 + 问题概述
数据偶发性不同步
【TiDB 版本】
tidb:v4.0.13,下游mysql为5.7,现象为偶发性出现数据不同步的情况,所以做了个脚本进行检测,然后时隔一个月,在今天又重新复现一次,所以没办法在上游用全局日志的方式检测,下游使用全局日志进行检测,日志显示了该表该订单有三条更新,实际该表该订单有四条更新,下游的错误日志中没有任何错误显示,发生的时间段各个系统负载正常,ticdc同步正常
ticdc相关时间段日志:
tidb相关时间段日志:
tikv相关时间段日志:
【附件】
- 相关日志、配置文件、Grafana 监控(https://metricstool.pingcap.com/)
- TiUP Cluster Display 信息
- TiUP CLuster Edit config 信息
- TiDB-Overview 监控
- 对应模块的 Grafana 监控(如有 BR、TiDB-binlog、TiCDC 等)
- 对应模块日志(包含问题前后 1 小时日志)
若提问为性能优化、故障排查类问题,请下载脚本运行。终端输出的打印结果,请务必全选并复制粘贴上传。
duzq
(duzq)
2
实际该订单有四条更新是怎么确定的?这 4 条更新是四个事务执行的还是有部分更新是在一个事务里么?
db_user
(Db User)
3
感谢回复,与开发确定过,是四条更新,前三条执行正常,最后一条没执行,通过上下游数据对比可以看出,不在一个事务里,就是一个改订单状态的事务
duzq
(duzq)
4
1.有日志可以看到第四条写入 tidb 成功了么?
2.如果有日志可以确定第四条写入成功,那请分析下 ticdc 事发时间段的 binlog,能否找到前 3 条执行正常的 sql 以及第四条没有执行的 sql 么?
db_user
(Db User)
5
没有日志,可以通过数据看出来,tidb集群没有部署binlog
duzq
(duzq)
6
tidb–>ticdc–>mysql是这样的架构么,现在问题是 tidb 写入 4 条记录成功,但是通过 ticdc 同步到 mysql 时候,mysql 的 binlog 里只有三条记录么?
db_user
(Db User)
7
对,架构对,mysql的通用日志和二进制都能看出来只有3条更改,我想用tcp抓包,但是因为我下游是云,所以无法抓,我试着抓取cdc往下游发送的包看看吧
duzq
(duzq)
8
那可以临时开启 tidb 的全日志,看第四条记录是否写入到 tidb,如果写入 tidb 也是成功的,那就需要开启 ticdc 数据落盘,看生成 binlog 是否成功,如果都有第四条记录,那应该就是在 ticdc 写入到 mysql 时候失败了。可以按照这个思路定位下。
db_user
(Db User)
9
因为偶发,所以没法开通用日志,太耗费资源了,写入tidb是成功的,我在ticdc这头做了tcp对3306的抓包,等再出现的时候看吧
h5n1
(H5n1)
10
‘ticdc 数据落盘,看生成 binlog 是否成功’ 请问下这个功能怎么开启
db_user
(Db User)
关闭
11
此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。