seiang
(Seiang)
2022 年6 月 28 日 02:00
1
【 TiDB 使用环境`】生产
【 TiDB 版本】
V5.0.3
【遇到的问题】
TiCDC任务同步MySQL已经运行一个多月了,今天早上突然出现同步延迟不断的增大;
但是上游tidb集群的写入数据量也没有变化,并且下游mysql也没有任何的变化
CDC节点日志如下:
cdc.log.tar.gz (5.8 MB)
【复现路径】
【问题现象及影响】
【附件】
相关日志、配置文件、Grafana 监控(https://metricstool.pingcap.com/ )
TiUP Cluster Display 信息
TiUP CLuster Edit config 信息
TiDB-Overview 监控
对应模块的 Grafana 监控(如有 BR、TiDB-binlog、TiCDC 等)
对应模块日志(包含问题前后 1 小时日志)
若提问为性能优化、故障排查 类问题,请下载脚本 运行。终端输出的打印结果,请务必全选 并复制粘贴上传。
polars
(Huwsun)
2022 年6 月 28 日 03:43
2
我们5.3版本,也碰到了类似的问题,突然延迟大增,然后就不同步了,内存占用还特别高,最大到50G
seiang
(Seiang)
2022 年6 月 28 日 03:55
3
也是通过CDC同步到MySQL吗?那你们定位到具体原因了吗?最后怎么解决的呢?
dba-kit
(张天师)
2022 年6 月 28 日 03:57
4
我之前遇到过在TiDB上执行一个大事务(insert into select的方式备份表),结果TiCDC就一直延时。
看你的监控信息,Unified Sort on disk一直在增长,感觉还是有大事务
dba-kit
(张天师)
2022 年6 月 28 日 04:00
5
我当时是先找到是哪个表延时的,然后修改changfeed,暂时不同步那个表,优先恢复其他表的同步问题。然后用dumpling来导出那个表,另起一个changefeed来同步,来跳过那个大事务。等业务数据追上了,再找个时间把两个changefedd来合并一下
seiang
(Seiang)
2022 年6 月 28 日 04:03
6
应该不是不事务,我只同步了一张表,这张表就只有insert操作,Unified Sort on disk一直在增长,而且在不断增加,这个定位不到具体的原因
代晓磊_Mars
(Marsdai)
2022 年6 月 28 日 04:32
7
看看上游tidb的同步表有没有大的添加索引的DDL操作?或者刚进行了DDL操作
代晓磊_Mars
(Marsdai)
2022 年6 月 28 日 04:34
8
执行下cdc cli changefeed query -s --pd=http://10.0.10.25:2379 --changefeed-id=simple-replication-task看下当前同步任务是否有报错
应该是有大事务 cdc是事务堵住了 tidb的改表结构是online ddl 很快就完成 而mysql不是 这样的同步 数据量大了 mysql就支撑不住。正好证明tidb的优秀
从 6:34 开始,出现大量的这种日志,这个时间 tikv 发生了什么么?
[2022/06/28 06:34:00.826 +08:00] [WARN] [client.go:1543] ["region not receiving resolved event from tikv or resolved ts is not pushing for too long time, try to resolve lock"] [regionID=4149003] [span="[7480000000000004ff415f72800000000
9ff1900410000000000fa, 7480000000000004ff415f728000000009ff1c9a5f0000000000fa)"] [duration=21.35s] [lastEvent=132.861559ms] [resolvedTs=434207252666122299]
[2022/06/28 06:34:00.830 +08:00] [WARN] [client.go:1543] ["region not receiving resolved event from tikv or resolved ts is not pushing for too long time, try to resolve lock"] [regionID=4107597] [span="[7480000000000004ffbf5f72800000000
1ff5cdfe10000000000fa, 7480000000000004ffbf5f728000000001ff607c870000000000fa)"] [duration=21.35s] [lastEvent=136.812613ms] [resolvedTs=434207252666122299]
[2022/06/28 06:34:00.836 +08:00] [WARN] [client.go:1543] ["region not receiving resolved event from tikv or resolved ts is not pushing for too long time, try to resolve lock"] [regionID=4044439] [span="[7480000000000004ffbb5f72800000000
3ff3564880000000000fa, 7480000000000004ffbb5f728000000003ff3902770000000000fa)"] [duration=21.35s] [lastEvent=141.137059ms] [resolvedTs=434207252666122299]
seiang
(Seiang)
2022 年6 月 28 日 05:21
11
同步的表今天没有做DDL的操作,同步任务状态也是正常的:
$ tiup ctl:v5.0.3 cdc changefeed query -s --pd=http://10.30.xx.xx:2379 --changefeed-id=xxxs-sync-task
Starting component ctl
: /home/tidb/.tiup/components/ctl/v5.0.3/ctl cdc changefeed query -s --pd=http://10.30.xx.xx:2379 --changefeed-id=xxxs-sync-task
{
“state”: “normal”,
“tso”: 434211597270384728,
“checkpoint”: “2022-06-28 11:09:52.810”,
“error”: null
}
seiang
(Seiang)
2022 年6 月 28 日 05:23
12
6:34 这个时间,tikv没有任何的异常情况,TiCDC同步延迟从监控看是从早上08:20左右开始逐渐增大的;
而且现在延迟越来越大了
dba-kit
(张天师)
2022 年6 月 28 日 05:35
13
MySQL监控有么?是不是下游MySQL性能不足了?
1 个赞
db_user
(Db User)
2022 年6 月 28 日 05:46
14
建议查看mysql的通用日志,二进制日志,或者对3306端口做一个tcpdump,我之前遇到过是因为开发在进行大量delete ,堵塞了其他操作,通过tcpdump监听到了
seiang:
TiCDC任务同步MySQL已经运行一个多月了
但是从你的log看,昨天前天的qps都是0,从今天凌晨才开始进数据
[2022/06/27 23:31:07.247 +08:00] ... [changefeed=xxx-task] [count=0] [qps=0]
[2022/06/27 23:41:07.247 +08:00] ... [changefeed=xxx-task] [count=0] [qps=0]
[2022/06/27 23:51:07.248 +08:00] ... [changefeed=xxx-task] [count=0] [qps=0]
[2022/06/28 00:01:07.248 +08:00] ... [changefeed=xxx-task] [count=119204] [qps=198]
[2022/06/28 00:11:07.249 +08:00] ... [changefeed=xxx-task] [count=1008319] [qps=1680]
[2022/06/28 00:21:07.272 +08:00] ... [changefeed=xxx-task] [count=932367] [qps=1553]
seiang
(Seiang)
2022 年6 月 28 日 06:00
16
数据一直是有同步的,因为是两个CDC,在另一个cdc节点日志上是可以看到之前数据同步的,qps不为0
[2022/06/27 02:21:00.785 +08:00] [INFO] [statistics.go:126] ["sink replication status"] [name=mysql] [changefeed=xxxx-task] [capture=xx.xx.xx.108:8300] [count=429212] [qps=715]
[2022/06/27 02:31:00.789 +08:00] [INFO] [statistics.go:126] ["sink replication status"] [name=mysql] [changefeed=xxxx-task] [capture=xx.xx.xx.108:8300] [count=404536] [qps=674]
[2022/06/27 02:41:00.791 +08:00] [INFO] [statistics.go:126] ["sink replication status"] [name=mysql] [changefeed=xxxx-task] [capture=xx.xx.xx.108:8300] [count=384137] [qps=640]
[2022/06/27 02:51:00.797 +08:00] [INFO] [statistics.go:126] ["sink replication status"] [name=mysql] [changefeed=xxxx-task] [capture=xx.xx.xx.108:8300] [count=365038] [qps=608]
[2022/06/27 03:01:00.797 +08:00] [INFO] [statistics.go:126] ["sink replication status"] [name=mysql] [changefeed=xxxx-task] [capture=xx.xx.xx.108:8300] [count=350421] [qps=584]
[2022/06/27 03:11:00.837 +08:00] [INFO] [statistics.go:126] ["sink replication status"] [name=mysql] [changefeed=xxxx-task] [capture=xx.xx.xx.108:8300] [count=334392] [qps=557]
[2022/06/27 03:21:00.848 +08:00] [INFO] [statistics.go:126] ["sink replication status"] [name=mysql] [changefeed=xxxx-task] [capture=xx.xx.xx.108:8300] [count=325291] [qps=542]
[2022/06/27 03:31:00.904 +08:00] [INFO] [statistics.go:126] ["sink replication status"] [name=mysql] [changefeed=xxxx-task] [capture=xx.xx.xx.108:8300] [count=312800] [qps=521]
[2022/06/27 03:41:00.904 +08:00] [INFO] [statistics.go:126] ["sink replication status"] [name=mysql] [changefeed=xxxx-task] [capture=xx.xx.xx.108:8300] [count=302907] [qps=504]
[2022/06/27 03:51:00.909 +08:00] [INFO] [statistics.go:126] ["sink replication status"] [name=mysql] [changefeed=xxxx-task] [capture=xx.xx.xx.108:8300] [count=293315] [qps=488]
[2022/06/27 04:01:00.909 +08:00] [INFO] [statistics.go:126] ["sink replication status"] [name=mysql] [changefeed=xxxx-task] [capture=xx.xx.xx.108:8300] [count=288179] [qps=480]
[2022/06/27 04:11:00.910 +08:00] [INFO] [statistics.go:126] ["sink replication status"] [name=mysql] [changefeed=xxxx-task] [capture=xx.xx.xx.108:8300] [count=279882] [qps=466]
[2022/06/27 04:21:00.910 +08:00] [INFO] [statistics.go:126] ["sink replication status"] [name=mysql] [changefeed=xxxx-task] [capture=xx.xx.xx.108:8300] [count=278376] [qps=463]
[2022/06/27 04:31:00.921 +08:00] [INFO] [statistics.go:126] ["sink replication status"] [name=mysql] [changefeed=xxxx-task] [capture=xx.xx.xx.108:8300] [count=275506] [qps=459]
[2022/06/27 04:41:00.921 +08:00] [INFO] [statistics.go:126] ["sink replication status"] [name=mysql] [changefeed=xxxx-task] [capture=xx.xx.xx.108:8300] [count=277555] [qps=462]
[2022/06/27 04:51:00.922 +08:00] [INFO] [statistics.go:126] ["sink replication status"] [name=mysql] [changefeed=xxxx-task] [capture=xx.xx.xx.108:8300] [count=279637] [qps=466
下面是另外一个cdc节点的日志:
cdc.log.tar.gz (15.8 MB)
seiang
(Seiang)
2022 年6 月 28 日 06:59
17
问题已经解决了,下游mysql性能的问题导致的
感谢@ dba-kit @ 代晓磊_Mars @ ShawnYan @ 蒋明tidb狂热爱好者 各位提供的排查思路
dba-kit
(张天师)
2022 年6 月 28 日 07:01
20
哈哈哈,果然。
如果TiDB侧确认没有变更,没有大事务,那就换个方向,调查一下下游MySQL的性能,是不是写入变慢了,拖累TiCDC。