【 TiDB 使用环境】生产环境
【 TiDB 版本】5.0.4
【遇到的问题:问题现象及影响】
集群有两个cdc节点,两节点的内存使用极为不均匀。
分别A=25%,B=92%
【附件:截图/日志/监控】
-
cdc任务分布
-
内存使用分布:
【 TiDB 使用环境】生产环境
【 TiDB 版本】5.0.4
【遇到的问题:问题现象及影响】
集群有两个cdc节点,两节点的内存使用极为不均匀。
分别A=25%,B=92%
【附件:截图/日志/监控】
cdc任务分布
内存使用分布:
是一直都是这样的吗
相关日志有吗
上面的问题,确认下下述信息:
[changefeed.go:695] [“apply job”] [job=“ID:23497, Type:add column, State:done, SchemaState:public, SchemaID:14812, TableID:14840, RowCount:0, ArgLen:0, start time: 2022-12-27 14:45:48.199 +0800 CST, Err:, ErrCount:0, SnapshotVersion:0”]
日志:
脱敏了表名、ErrCount:0 的ddl
cdc_no_ddl_no_create_no_Err.log.tar.gz (5.9 MB)
两个cdc节点的内存都是一样的大小吗?然后实际使用的内存不均衡
如果持续时间比较的长,你可以查看一下服务进程或者业务,是哪些服务在使用这个节点。
是的,内存都一样
内存率使用高的节点(B节点),是不是相对应的同步任务中,有变更数据量特别大的表?
当前集群共11个changefeed分布为:
A节点:2个 (这两个changefeedB节点也有)
B节点(owner):11个(全部changefeed)
变更数据量,暂未统计
可能会跟这个有关系,数据变更频繁的表所在的changefeed所在的节点,肯定比变更不频繁的消耗的内存要少,查查看吧
看看两个节点的changefeed所负责的表,是不是包含热点表,有的话,热点表有没有差异(个数,数据变更频繁度),尽量均衡些
根本原因初步看是changefeed
任务调度不均匀导致的系统资源占用不均匀。
可以根据表的热度来创建changefeed,使用表过滤功能,尽可能使每个changefeed负责的表保持均衡
有办法根据表热度指定changefeed由那个capture调度么。没找到这个命令~
第一种方式.:
按表热度重新创建同步任务
第二种方式:
1. pause changefeed;
2. 更改配置文件(按表热度更改表的过滤规则)
3. update changefeed;
4. resume changefeed;
5.0版本和6.5版本好像命令不一样,5.0是指定pd节点,6.5指定的–server。这样改动区别是那些呢?
cdc cli changefeed create --pd=http://10.0.10.25:2379 --sink-uri="mysql://root:123456@127.0.0.1:3306/" --changefeed-id="simple-replication-task" --sort-engine="unified"
cdc cli changefeed create --server=http://10.0.10.25:8300 --sink-uri="mysql://root:123456@127.0.0.1:3306/" --changefeed-id="simple-replication-task"