反向迁移

功能介绍

反向迁移是指将openGauss端产生的增量数据迁移至mysql端。

原理简介

debezium opengauss connector的source端,监控openGauss的xlog日志,并将数据的DML操作以AVRO格式写入到kafka;

debezium opengauss connector的sink端,从kafka读取AVRO格式的数据,在mysql端按表并行回放,从而完成数据的DML操作从openGauss在线迁移至mysql。

特性优势

  • 反向迁移可满足用户业务迁移逃生的诉求,保持源端、目标端两个库并行运行,在目标端数据库出问题后应用能及时切回源端数据库。
  • 反向迁移支持断点续传功能,可满足工具中断重启后数据持续迁移,中断期间的增量数据不遗漏。
  • 反向迁移支持迁移进度与回放失败的SQL语句实时上报。
  • 反向迁移支持jdbc超时重连机制,可在jdbc断连后自动重连,用户无感知。
  • 反向迁移支持用户自定义是否在迁移结束后保留逻辑复制槽,若保留逻辑复制槽则可实现断点续传功能。
  • 反向迁移增加流量控制能力,可在迁移大批量增量数据时触发流量控制,防止系统崩溃。

操作步骤

反向迁移gs_replicate依赖MySQL一键式迁移工具gs_rep_portal,可实现反向迁移的安装、启动、停止、卸载整个过程。

1、根据系统版本下载对应版本的portal(这里以centos系统x86架构为例)

wget https://opengauss.obs.cn-south-1.myhuaweicloud.com/latest/tools/centos7/PortalControl-5.1.0-x86_64.tar.gz

不同系统版本和架构对应的portal下载链接详见portal下载链接

2、解压,并进入portal对应目录

tar -zxvf PortalControl-5.1.0-x86_64.tar.gz
cd portal

3、修改gs_rep_portal配置文件

配置文件位于config目录内,反向迁移相关的配置文件主要包含如下两个,相关参数含义简要说明如下:

  • toolspath.properties
# 反向迁移依赖包路径,可自定义修改
debezium.path=/ops/portal/tools/debezium/
# kafka路径,位于反向迁移依赖包路径下,可自定义修改
kafka.path=/ops/portal/tools/debezium/kafka_2.13-3.2.3/
# confluent路径,位于反向迁移依赖包路径下,可自定义修改
confluent.path=/ops/portal/tools/debezium/confluent-5.5.1/
# connector路径,位于反向迁移依赖包路径下,可自定义修改
connector.path=/ops/portal/tools/debezium/plugin/
# debezium opengauss connector路径,位于connector路径下,可自定义修改
connector.opengauss.path=/ops/portal/tools/debezium/plugin/debezium-connector-opengauss/
# kafka下载路径
kafka.pkg.url=https://downloads.apache.org/kafka/3.2.3/kafka_2.13-3.2.3.tgz
# confluent下载路径
confluent.pkg.url=https://packages.confluent.io/archive/5.5/confluent-community-5.5.1-2.12.zip
# debezium opengauss connector下载路径
connector.opengauss.pkg.url=https://opengauss.obs.cn-south-1.myhuaweicloud.com/latest/tools/replicate-openGauss2mysql-5.1.0.tar.gz
# 反向迁移依赖安装包路径,可自定义修改
debezium.pkg.path=/ops/portal/pkg/debezium/
# kafka包名
kafka.pkg.name=kafka_2.13-3.2.3.tgz
# confluent包名
confluent.pkg.name=confluent-community-5.5.1-2.12.zip
# openGauss2mysql在线复制包名
connector.opengauss.pkg.name=replicate-openGauss2mysql-5.1.0.tar.gz
  • migrationConfig.properties
# mysql用户名
mysql.user.name=root
# mysql密码
mysql.user.password=***
# mysql数据库ip
mysql.database.host=127.0.0.1
# mysql数据库端口
mysql.database.port=3306
# mysql数据库名称
mysql.database.name=test123
# openGauss用户名
opengauss.user.name=test
# openGauss密码
opengauss.user.password=***
# openGauss数据库ip
opengauss.database.host=127.0.0.1
# openGauss数据库端口
opengauss.database.port=5432
# openGauss数据库名称
opengauss.database.name=test1234
# openGauss数据库的schema名称
opengauss.database.schema=test123
# 反向迁移的安装方式,默认为offline,表示离线安装,需通过参数debezium.pkg.path指定离线依赖安装包的路径;若设置为online,对应在线安装,在线下载的安装包将存放在参数debezium.pkg.path指定的路径
default.install.mysql.reverse.migration.tools.way=offline

4、安装

sh gs_replicate.sh install opengauss-mysql workspace.id

其中workspace.id表示迁移任务id,取值为数字和小写字母的组合,不同的id区分不同的迁移任务,不同迁移任务可并行启动。若使用已存在的workspace.id,并修改其中的配置,请在portal/workspace/${workspace.id}/config/路径下修改对应的配置文件。

5、启动

sh gs_replicate.sh start opengauss-mysql workspace.id

6、停止

sh gs_replicate.sh stop opengauss-mysql workspace.id

7、卸载

sh gs_replicate.sh uninstall opengauss-mysql workspace.id

注意事项

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

  • openGauss需要3.0.0及以上版本。

  • 反向迁移依赖于openGauss的逻辑复制,仅限能进行逻辑复制的用户进行操作。

  • openGauss 的GUC参数设置要求为:wal_level = logical。

  • 需要调整pg_hba.conf以允许复制(这里的值取决于实际的网络配置以及用于连接的用户):

    host     replication     repuser     0.0.0.0/0     sha256
    
  • Kafka中以AVRO格式存储数据,AVRO字段名称命名规则为: 以[A-Za-z_]开头,随后仅包含[A-Za-z0-9_] 因此,对于openGauss中的标识符命名,包括表名、列名等,需满足上述命名规范,否则迁移会报错。

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