断点续传
软件异常导致数据丢失对数据同步来说是致命的,考虑同步软件本身和运行环境可能出现的故障(断电、断网等),软件设计完善的断点续传机制,保证软件重启后同步数据的零丢失零重复。断点续传是一种在同步软件运行时保存点(savepoint)的机制,在写入目标库、 kafka 后记载当前位置,并将其作为重启后的获取数据库 binlog 日志的起始位置,同时针对不同目标进行了专有设计。
Kafka
因 kafka 本身不具备数据重复检测,所以重启时工具从 kafka 拉取最后一条发送成功的消息,从消息中取出其在虚谷数据库 binlog 日志中对应的偏移量,同步程序结合保存点和该偏移量,忽略已发送到 kafka 的 binlog 项实现增量 binlog日志数据不重复不丢失。关系型数据库
目标端为关系型数据库时,断点续传采用同步软件自身保存点(savepoint)和关系型数据库唯一性约束结合的方式保证数据零丢失和零重复。