Pump集群binlog存储问题

为提高效率,请提供以下信息,问题描述清晰能够更快得到解决:

【概述】场景+问题概述
场景: 集群中有6个pump节点,但是没有drainer 消费者,此时下线一个pump 节点,现在想知道被下线的pump节点中的binlog信息是否永久丢失了。

  问题:
        Pump 集群各节点数据是单副本存储吗?

【背景】做过哪些操作

【现象】业务和数据库现象

【业务影响】

【TiDB 版本】
v4.0.8


若提问为性能优化、故障排查类问题,请下载脚本运行。终端输出的打印结果,请务必全选并复制粘贴上传。

1 个赞

如果正常下线不会丢失,按照文档操作来完成。如果非正常操作下线,需要通过其他办法解决,可以参考一下官方文档的 FAQ,里面有 pump 异常后的,修复办法。

就楼主的操作, 是否属于正常操作?

这里的深层次问题是, 下线一个pump节点, TiDB是否会自动将此节点还没有被消费的数据迁移到其它节点?

  • 如果会迁移那不会丢数据。 如果不会迁移, 那数据肯定丢了。
1 个赞

https://docs.pingcap.com/zh/tidb/stable/maintain-tidb-binlog-cluster#pump

按照这个逻辑,数据不会丢失。

集群状态:

6个pump 节点, 没有drainer 节点

操作:
正常下线掉 3个pump 节点

问题:
在时间点A正常下线掉的三个pump 节点中存储的binglog 数据,在其他未被下线的pump 中会有副本吗?

这个时候添加一个drainer 使用 时间点A之前的TSO 来同步 binlog , 还能获取到完整的binglog 吗?

不会有副本,新增的 drainer 需要使用最新的 TSO 同步增量数据。差量数据可以通过 sync-diff- inspector 工具做一下修复。

好的,了解了。多谢

:thinking: 如果只是部署了 pump,没有部署 drainer,pump 自身也是有 gc 的,超过 gc 时间 pump 的数据会被清理掉。

一般建议是先进行全量数据导出导入,然后 启动 drainer 的时候,用全量的 tso 开始增量同步,就不会有数据丢失的情况。