1.ticdc版本:v5.1.1
2.问题描述:公司需要在异地机房部署一套tidb容灾集群,采用的是新部署一套tidb集群,使用ticdc进行两个集群间的数据同步的方法。目前已经使用br工具全量备份并恢复数据到异地机房,但在开启cdc同步任务后一直看不到异地机房有流量进入,看cdc日志也没有error类的错误日志产生,不知道是哪里配置的问题,麻烦帮我分析下。
a)、环境:本地机房IP段192.168.x.x,异地机房IP段172.17.x.x,ticdc部署在本地机房服务器上
b)、br全量备份恢复:在执行br前已将tikv_gc_life_time调整为100h
c)、br全量恢复完成后执行了以下命令创建ticdc同步任务:
tiup ctl:v5.1.1 cdc changefeed create --pd=http://192.168.x.x:2379 --sink-uri=“tidb://root:***@172.17.x.x:4000/?worker-count=16&max-txn-row=5000” --changefeed-id=“full-sync-task” --sort-engine=“unified” --start-ts=“431574226664947935”
d)大概步骤就是这些,创建完ticdc同步任务后,下游Tidb集群始终没有流量产生,也没用数据同步,不知道是什么问题,麻烦帮忙分析一下。
好奇怪,关注
先看下changefeed的状态,例如:
cdc cli changefeed query --pd=http://10.0.10.25:2379 --changefeed-id=simple-replication-task
我在4.0.6版本下,也遇到这个问题了,创建同步任务后,没有任何数据同步过去
你备份的时候TSO时间是2022-03-04 00:30:22,你查看cdc状态的时间是2022-03-06 12:10:48 这不就是开始同步了么?说的没同步是啥意思?
这个是我数据不同步后尝试了几种参数修改时候的截图。
由于数据一直不同步,我尝试了以下几种参数修改的方法:
1)去掉–start-ts参数,让数据同步从当前时间开始;
2)–pd参数填写三台pd的IP地址;
3)–sink-uri=“tidb修改为–sink-uri=“mysql
以上几种方法尝试过都不行,下游tidb一直没流量进来。
另外有一点要提到的是我上游的tidbtikv_gc_life_time调整为了100h,下游还是默认的10min,不知道跟这个参数是否有关系。
请检查一下cdc。是否有资源不足,cpu,内存,网络等。
主机房跟异地机房直接的网络端口策略是否开通了?
没有资源不足问题,就是在cdc同步任务开启后才飙升到90%以上的。
网络都是通的,没有做限制
负载飙升可能是同步的数据量太多TiCDC 卡住了?试试做个 BR 增量备份用最新的 start-ts 创建 changefeed
TiCDC failed to receive from stream 这种日志不影响正常同步,新版本应该也已经优化掉了
我们有个定时任务每晚都会跑BR的全量备份,现在使用周五全量备份的TSO跑增量是否会有问题?
另外我看cdc同步任务在跑的时候,*/tidb-data/cdc-8300/tmp/内的数据会持续增加到200多G,之后又会释放重新开始增加,不知道是cdc的什么机制。
这样可以试试用今天的全量备份,先将之前的 changefeed 删掉,最好在今天全量备份的基础上再做个增量,追到最近的时间点
应该是有大量增量数据要同步,TiCDC 为避免 oom 用临时磁盘空间存储文件
https://docs.pingcap.com/zh/tidb/stable/manage-ticdc#unified-sorter-功能
能否麻烦楼主提供一下 TiCDC 所有监控面板的截图或导出呢?这个问题看上去和负载有关,我们想确认一下有没有异常负载。这边有几项可以麻烦楼主自查一下:
- 需要同步的表总数是多少
- TiCDC 进程的内存占用是多少
- 需要同步的 TiKV region 的总数
1.总共大概有60多个库,2700多张表,总数据量在4T~5T;
2.cdc进程占用的内存大概有50G,占总量40%(这台服务器上还有个tiflash,不过占用资源很少,周末的时候也没什么人用,可以忽略掉)
3.TiKV的信息:
4.我导出了cdc的全部监控信息,见附件tidb-app-TiCDC_2022-03-07T03_12_50.421Z.zip (1.9 MB)
这个问题的现象和 https://github.com/pingcap/tiflow/issues/2375 一致。最新版本已经有修复,在 v5.1.1 上可以尝试以下 Workaround:
减小 TiCDC 配置中的 per-table-memory-quota。建议减小到 1048576 或更小。