GBase 8a
适配迁移
文章

TDSQL到GBase8a数据同步方案

发表于2024-12-29 14:53:30176次浏览1个评论

TDSQL到GBase8a数据同步方案

 

  1. 简述

使用RTSync往8ampp增量同步数据,rtsync直接接入到tdsql的数据节点上的mysql实例,模拟一个从节点,把mysql的binlog复制到rtsync中,RTSync接收到binlog后将解析后的增量数据发送到Kafka中,由GBase 8a的Kafka Consumer从Kafka中消费数据写入到GBase 8a数据库中。

  1. 同步架构

方案总体架构如下:

图1 方案总体架构图

 

  1. 实现方式

RTSync通过模拟成为TDSQL的数据节点的slave,监听TDSQL的binlog日志来获取数据。当binlog设置为row模式以后,可以获取到执行的每一个增删改的操作,和修改前后的数据,基于这个特性,RTSync就能高性能的获取到TDSQL增量数据的变更。

当RTSync读取到数据变更后,将日志中的insert、update、delete语句解析成特定的数据格式,并将数据发送到Kafka的topic中。GBase8a的consumer组件实时从Kafka中消费数据并将数据拼装好后在数据库中执行,完成数据的落地。

图2 技术实现架构图

 

  1. 关键技术

RTSync主要包含三个大模块:

  1. binlog日志抽取模块:负责从binlog中抽取日志;

  2. binlog日志解析模块:负责解析从binlog抽取出的日志;

  3. 数据发送模块:负责将解析好的数据发送到Kafka的topic中。

图3 同步模块图

  1. 准确性、及时性

数据库binlog日志会记录数据库的所有操作,RTSync根据日志发生顺序进行解析,并且RTSync支持断点续传功能。当系统需要暂停同步时,RTSync会记录日志断点,恢复同步时会从断点位置继续同步。

RTSync支持在本地文件和Zookeeper中记录断点续传信息。为了保证数据不丢失,RTSync会在成功发送事务数据后,记录该事务的日志断点信息。为了保证数据不重复,RTSync在发送的数据中增加了唯一的sequence,consumer在消费时可以根据sequence判断数据是否重复,重复的数据会被丢弃。

以上几点可以保证数据的准确性。

在BenchmarkSQL的性能测试中,在单个mysql实例在戴尔710服务器上,100 warehouse、50 terminal的场景下,RTSync的数据解析性能达到24MB/S(mysql的binlog大小),约合2.9w条/s。结合GBase8a consumer的消费性能,可以计算出总体的同步性能。

RTSync支持同时解析TDSQL的多个数据库节点,并将各个节点的数据发送到Kafka的不同topic中,由GBase 8a的多个consumer并行消费数据。以此来保证数据同步的及时性。

 

 

评论

登录后才可以发表评论
GBase用户51885发表于 2个月前
厉害了