增量迁移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拉取数据都是严格保序的。
特性增强
无。
特性约束
当前支持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中的标识符命名,包括表名、列名等,需满足上述命名规范,否则在线迁移会报错。
依赖关系
gs_replicate工具依赖MySQL一键式迁移工具gs_rep_portal。