kkpeter
(Upstream889)
1
为提高效率,请提供以下信息,问题描述清晰能够更快得到解决:
【概述】场景+问题概述
场景: 集群中有6个pump节点,但是没有drainer 消费者,此时下线一个pump 节点,现在想知道被下线的pump节点中的binlog信息是否永久丢失了。
问题:
Pump 集群各节点数据是单副本存储吗?
【背景】做过哪些操作
【现象】业务和数据库现象
【业务影响】
【TiDB 版本】
v4.0.8
若提问为性能优化、故障排查类问题,请下载脚本运行。终端输出的打印结果,请务必全选并复制粘贴上传。
1 个赞
Lucien
( Lucien)
2
如果正常下线不会丢失,按照文档操作来完成。如果非正常操作下线,需要通过其他办法解决,可以参考一下官方文档的 FAQ,里面有 pump 异常后的,修复办法。
CrazyNash
(Crazy Nash)
3
就楼主的操作, 是否属于正常操作?
这里的深层次问题是, 下线一个pump节点, TiDB是否会自动将此节点还没有被消费的数据迁移到其它节点?
- 如果会迁移那不会丢数据。 如果不会迁移, 那数据肯定丢了。
1 个赞
Lucien
( Lucien)
4
kkpeter
(Upstream889)
5
集群状态:
6个pump 节点, 没有drainer 节点
操作:
正常下线掉 3个pump 节点
问题:
在时间点A正常下线掉的三个pump 节点中存储的binglog 数据,在其他未被下线的pump 中会有副本吗?
这个时候添加一个drainer 使用 时间点A之前的TSO 来同步 binlog , 还能获取到完整的binglog 吗?
Lucien
( Lucien)
6
不会有副本,新增的 drainer 需要使用最新的 TSO 同步增量数据。差量数据可以通过 sync-diff- inspector 工具做一下修复。
小王同学
8
如果只是部署了 pump,没有部署 drainer,pump 自身也是有 gc 的,超过 gc 时间 pump 的数据会被清理掉。
一般建议是先进行全量数据导出导入,然后 启动 drainer 的时候,用全量的 tso 开始增量同步,就不会有数据丢失的情况。