数据同步drinaer 有没有高可用

1)bin log 同步情况下pump 可以有多个来实现高可用,但是drainer 只有一个,如何实现drainer 高可用?
2)当pump 故障的情况下,每个pump 存放的都是不同的bin log ,如何做到这个pump 内的数据不丢失,pump 高可用如何实现
3)当ticdc caputer 故障的情况下 ,ticdc caputre 存放的都是不同的 tikv log ,如何做到这个caputre内数据不丢失,实现高可用?
4)ticdc 和 bin long 同步都是基于row的逻辑复制,从性能和稳定性来考虑,是否以后会推出物理级复制?

1赞

1)drainer 作为单进程实例不支持高可用,可以提前准备另一个 drainer 节点,如果发生故障,将备节点从下游记录的 checkpoint 点拉起恢复,如果开启了 relay log,那 relay log 的存放位置也是单点,可以放到共享存储或 raid10
2)pump 不支持单节点高可用,为了确保 pump 内的数据不丢失,可以将 binlog 存放到共享存储,发生故障拉起另一个 pump 节点读取共享目录的日志恢复服务
3)ticdc capture 本地不落盘,依赖 tikv 的高可用,ticdc 故障后,其他 ticdc 在 gc life time 范围内重新向 tikv 拉取增量日志
4)物理复制是指不同 tidb 集群之间的吧,暂时还没有这方面的规划

1赞

pump落地的binlog 和driner 落地的本地文件有啥区别?都可以用于br的后续恢复吗?

1赞

pump 记录的 binlog 和 drainer 的 relay log 格式不同,前者是 vlog 记录了 binlog event,后者是 protobuf 格式,relay log 不能用于 br 后续恢复

2赞

哦明白了,原来driner落地的本地文件格式:就是relay log,这样理解对吧?

1赞

drainer 下游可以输出为本地文件用于增量恢复,这个文件跟 relay log 不同

image

relay log 只是用于灾备场景,用来保证下游数据恢复为一致的状态,触发场景单一

1赞

可以实现br+driner输出的本地文件增量恢复吗?。和利用br+bin log增量恢复啥区别?

1赞

如果需要按时间点增量恢复的功能,可以等下个版本 5.3 支持了 PiTR BR 支持恢复数据到指定时间点 (PITR) ,使用 BR+TiCDC 的方式实现,BR+Drainer 或 BR+Binlog 理论上也可以,但是 TiDB Binlog 后续版本不再开发和支持,会逐渐被 TiCDC 替换。

1赞

ticdc 目前的同步log 是不落地的,那以后利用BR+ticdc 的话,ticdc log 要落地的吧?

1赞

ticdc 支持 log backup 依赖于#768 实现,是 PiTR 功能的一部分

1赞