dumpling导数,tidb内存持续上升问题

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。

  • 【TiDB 版本】:V4.0.4
  • 【问题描述】:有以下15个库需要备份出来,在用dumpling备份的过程中,发现tidb内存持续在上涨,然后TIDB oom了,还请帮忙看看如何修改dumpling的参数能解决内存持续上涨的情况,谢谢。

用的是for循环串行去导数据
${DUMPLING} -h ${BACKUP_HOST} -u ${BACKUP_USER} -p$BACKUP_PASSWD --port $BACKUP_PORT --output ${data_backup_dir} --logfile ${logfile} --threads 4 --filesize 256MiB --loglevel info --rows 10000 --database $DATABASE_NAME

需要导出来的库,数据量其实也不大
image
串行导数的时候,内存持续上涨

针对dumpling 备份
1.调小 --rows 譬如调到 1000
2.添加参数 --tidb-mem-quota-query 默认是 32G 可以调到一个合理的值
3.如果备份的相关表使用了 SHARD_ROW_ID 或 AUTO_RANDOM 会导致 row_id 分布不够均匀,也会导致TiDB 内存上涨。

推荐
如果是数据备份需求,可以尝试使用 BR 进行备份

用dumpling,就算调小相关参数,也没办法解决OOM的问题。使用BR可以导出,导出来的数据量很小。几百G的数据,导出来的sst文件这么小的吗?

数据库查询的大小
image

导出来的实际大小
image

1.建议检查下 BR 备份的日志 查看是否有异常报错
2.BR 备份是 BR +TiKV 共同完成备份操作的。BR 作为备份中控,多个 TiKV 同时进行 SST 文件的生成与导出。

日志没有报错,备份的数据是放在nfs网盘上的,上面看到的导出来的数据是所有tikv的记录。
备份过程中的日志。

BR 部分是包含 checksum 校验的。如果 checksum 通过,备份应是可靠有效的。

日只看是没有问题,要备份的数据是200G左右,但是备份下来的sst才几个G,我怎么感觉都有点不靠谱,能否有什么方法判断备份的数据是不是存在问题?

找个空集群测试还原下试试