增量迁移gs_replicate

可获得性

本特性自openGauss 5.0.0版本开始引入。

特性简介

增量迁移gs_replicate是指将mysql数据迁移期间(包括全量和增量迁移)产生的增量数据迁移至openGauss端。

客户价值

通过使用gs_replicate工具,可完成增量数据从MySQL搬迁至openGauss数据库。

特性描述

debezium mysql connector的source端,监控mysql数据库的binlog日志,并将数据(DDL和DML操作)以AVRO格式写入到kafka;debezium mysql connector的sink端,从kafka读取AVRO格式数据(DDL和DML操作),并组装为事务,在openGauss端按照事务粒度并行回放,从而完成数据(DDL和DML操作)从mysql在线迁移至openGauss端。

由于该方案严格保证事务的顺序性,因此将DDL和DML路由在kafka的一个topic下,且该topic的分区数只能为1(参数num.partitions=1),从而保证source端推送到kafka,和sink端从kafka拉取数据都是严格保序的。

特性增强

  • 增量迁移支持迁移进度与回放失败的SQL语句实时上报。
  • 增量迁移支持断点续传功能,可满足工具中断重启后数据持续迁移,中断期间的增量数据不遗漏。
  • 增量迁移支持jdbc超时重连机制,可在jdbc断连后自动重连,用户无感知。
  • 增量迁移增加流量控制能力,可在迁移大批量增量数据时触发流量控制,防止系统崩溃。
  • 增量迁移支持两种并行回放模式:按事务并行回放和按表并行回放,可根据不同的业务场景选择不同的回放模式,达到性能最优。

特性约束

  • 当前支持MySQL IUD操作(insert、update、delete)产生的增量数据迁移至openGauss。

  • 支持迁移openGauss数据库兼容的MySQL DDL语句,对于不兼容的DDL,迁移时会报错处理(openGauss在完善对DDL的兼容性)。

  • 为保证事务的顺序和一致性,不支持skip_event, limit_table, skip_table等设置。

  • MySQL需要5.7及以上版本。

  • MySQL参数设置要求为:log_bin=ON, binlog_format=ROW, binlog_row_image=FULL, gtid_mode = ON。若gtid_mode为off,则sink端按照事务顺序串行回放,会降低在线迁移性能。

  • 先进行全量迁移,再进行增量迁移,全量迁移可基于gs_mysync工具完成。

  • Kafka中以AVRO格式存储数据,AVRO字段名称命名规则为:

    - 以[A-Za-z_]开头
    - 随后仅包含[A-Za-z0-9_]
    

    因此,对于MySQL中的标识符命名,包括表名、列名等,需满足上述命名规范,否则在线迁移会报错。

  • 目前仅支持MySQL参数gtid_mode=on时的迁移进度上报。

依赖关系

gs_replicate工具依赖MySQL一键式迁移工具gs_rep_portal。

参考文档

开源社区地址:gs_rep_portal

详细参考文档: README.md

增量迁移社区地址:gs_replicate

详细参考文档:README.md

意见反馈
编组 3备份
    openGauss 2024-04-27 00:42:12
    取消