我有个三个tidb server,部署了3个pump,当把其中一个pump 节点停止后,drainer 那边就不会归档新的binlog了,试了好几次都是这样的问题了,所以说pump 之间根本就不是高可用的关系?
pump 没有多副本容灾能力,各 pump 只存储一部分 binlog,所有的 pump 本地 binlog 合到一起构成了完整的 binlog 数据。如果一个 pump 中存储着未被消费的 binlog,对应的 drainer 也无法将这部分变化数据复制给下游。
pump 的高可用是指当一个 pump 故障,tidb 会向其他存活的 pump 继续传输变化记录。
有容灾需求可以使用 TiCDC 作为替代,TiCDC 的变化数据产生于 TiKV,只要是 TiKV 中未被 GC 的历史数据,都可以被 TiCDC 消费给下游。
1 个赞
老师,你说的太好了,之前看文章一直说是pump 有高可用功能,其实并没有,挂了一个pump,drainer 那边根本不归档数据了,一旦把挂了的pump 拉起来,drainer 那边又可以归档数据了
还有一个问题,用多个pump 实例加共享存储就能实现pump 高可用了了嘛?如果能,这其中的原理是啥
收获满满,学习了
pump 的容灾可以在存储层面入手,比如使用 RAID10 来存储 pump 数据,增强容灾能力。