PD的mvcc_db_total_size过大

【 TiDB 使用环境】生产环境
【 TiDB 版本】v4.0.11
【复现路径】无
【遇到的问题:问题现象及影响】
存在主备A、B两个集群,通过服务方的双写以及TiCDC保持数据一致,但近期发现B集群的mvcc_db_total_size达到了5G左右,但A集群只有100M不到
想了解可能的原因以及如何将其降下去
【资源配置】


【附件:截图/日志/监控】


查下两个集群的 GC 的配置是否一致…

我看了PD的配置
高ETCD集群

  pd:
    auto-compaction-mode: revision
    auto-compaction-retention: "5"
    log.file.max-days: 3
    schedule.leader-schedule-limit: 4
    schedule.region-schedule-limit: 2048
    schedule.replica-schedule-limit: 64

正常集群

  pd:
    auto-compaction-mode: revision
    auto-compaction-retention: "5"
    log.file.max-days: 7
    quota-backend-bytes: 17179869184
    schedule.leader-schedule-limit: 4
    schedule.region-schedule-limit: 2048
    schedule.replica-schedule-limit: 64

所以看起来唯一不一样的只有quota-backend-bytes即元数据存储空间大小,默认值为8G,但看起来正常集群反而更大一些

查错地方了,查这个
https://docs.pingcap.com/zh/tidb/stable/garbage-collection-configuration#gc-配置

看起来tikv_gc_safe_point比较奇怪,正常的和last run间隔2周,高ETCD和last run间隔8周


那你要看下为啥,gc没有执行,看看日志,是哪里hang住了还是什么

感觉是CDC有问题,safe point一直原地不动,重启了几个节点后safe point指向了当前时间,但看起来ETCD并没有发生变化,这个需要等待下一次GC吗?


gc safe point 时间是今天的了,比前面发的变化了

GC 如果正常,MVCC 的版本信息就会被正常清理掉的,就是需要多给点时间

如果 GC 不正常,就排查下Gc 的问题就可以了

这个问题可能是低版本cdc的bug,我们最近遇到一个类似的问题,etcd 元数据太多占据了pd 集群的空间

看起来目前距离GC恢复已经过去24小时了,但是ETCD依然很高,我理解应该还是有其他原因导致的,是否和较高的empty-region以及number of region有关?我理解如果ETCD存储的是meta info的话这个是比较有可能的



我这边操作发现GC safepoint的停止必然和CDC有关,因为停止的时间恰好和某个stopped的CDC task的tso一致,清理CDC任务后GC就正常了,但是ETCD还是没有变化

empty-region 可以合并掉的… 这样可以减少资源占用,提速~

上游的cdc版本是什么,低版本的cdc有bug,参考这个https://docs.pingcap.com/zh/tidb/v5.4/troubleshoot-ticdc#ticdc-占用多少-pd-的存储空间

是CDC任务影响了嘛

看起来不是文档上提到的版本

Release Version: v4.0.11
Git Commit Hash: 52a6d9ea6da595b869a43e13ae2d3680354f89b8
Git Branch: heads/refs/tags/v4.0.11
UTC Build Time: 2021-02-25 16:40:37
Go Version: go version go1.13 linux/amd64

之前应该是的,不过清理CDC任务后目前GC safepoint已经恢复正常了,但ETCD size还是维持在5G左右,没有变化

我稍后试一试