使用pg_chameleon将数据从MySQL迁移至openGauss数据库

0    23    1

Tags:

👉 本文共约2664个字,系统预计阅读时间或需11分钟。

概述

数据库迁移是实际工作中经常遇到的问题,比如由于磁盘空间、业务性能、项目改造等等原因,有从甲服务器迁移到乙服务器,从A种数据库迁移到B种数据库,从源路径迁移到另一个目标路径、同一个机器下从一个用户迁移到另一个用户等各种场景,有时需要整个数据库所有文件都迁移,有时只需要迁移部分数据文件如REDO、表空间文件等。

chameleon是一个基于Python的MySQL到openGauss的实时复制工具。该工具提供了初始全量数据的复制及增量数据的实时复制能力,支持MySQL中各种数据类型的迁移。本文就介绍如何使用pg_chameleon将MySQL数据库迁移至openGauss。

图片

工具介绍

chameleon工具使用mysql-replication库从MySQL中提取row images,这些row images将以jsonb格式被存储到openGauss中。在openGauss中会执行一个pl/pgsql函数,解码jsonb并将更改重演到openGauss。同时,工具通过一次初始化配置,使用只读模式,将MySQL的全量数据拉取到openGauss,使得该工具提供了初始全量数据的复制以及后续增量数据的实时在线复制功能,可大大降低系统切换数据库时的停服时间。

工具安装

注意这里需要使用非root用户继续后续的操作,应该是为了控制执行权限。因为我将工具和openGauss安装在同一个机器,所以我这里直接使用的是omm用户。这里需要连接到外网进行一些工具依赖库的下载。

1.whl直接安装:

获取安装包:https://opengauss.obs.cn-south-1.myhuaweicloud.com/latest/chameleon/chameleon-3.0.0-py3-none-any.whl

创建python虚拟环境并激活。

然后通过pip安装即可。

提示“Successfully installed ****”就可以。

PS:这里需要连接到外网进行一些工具依赖库的下载。若是公司内网可以通过-i --trusted-host来指定内部网络。

2. 源码安装

通过git下载源码:git clone git@gitee.com:opengauss/openGauss-tools-chameleon.git

下载完成后,同样需要先创建python虚拟环境并激活:

然后进入代码的目录,执行python install命令安装:

安装完成后,不要退出python虚拟环境,可以开始使用chameleon工具。若退出了,后续继续执行进入Python环境的两行即可。

chameleon配置文件说明

pg_chameleon通过~/.pg_chameleon/configuration下的配置文件config-example.yaml定义迁移过程中的各项配置。整个配置文件大约分成四个部分,分别是全局设置、类型重载、目标数据库连接设置、源数据库设置。全局设置主要定义log文件路径、log等级等。类型重载让用户可以自定义类型转换规则,允许用户覆盖已有的默认转换规则。目标数据库连接设置用于配置连接至openGauss的连接参数。源数据库设置定义连接至MySQL的连接参数以及其他复制过程中的可配置项目。

详细的配置项解读,可查看官网的说明:

https://pgchameleon.org/documents_v2/configuration_file.html

完整的配置文件如下所示:

配置文件使用yaml文件规则配置,需要特别注意对齐,缩进表示层级关系,缩进时不允许使用Tab键,只允许使用空格,缩进的空格数目不重要,但相同层级的元素左侧需要对齐。

以上配置文件的含义是,迁移数据时,MySQL侧使用的用户名密码分别是 mysql_t1 和 Mysql_234。MySQL服务器的IP和port分别是1.1.1.1和3306,待迁移的数据库是mysql_database。

openGauss侧使用的用户名密码分别是 opengauss_test和 Gauss_234。openGauss服务器的IP和port分别是127.0.0.1(因为我是在openGauss服务器上部署的迁移工具)和5432,目标数据库是opengauss_db,同时会在opengauss_database下创建mysql_db1_sch,迁移的表都将位于该schema下。

需要注意的是,这里使用的用户需要有远程连接MySQL和openGauss的权限,以及对对应数据库的读写权限。同时对于openGauss,运行chameleon所在的机器需要在openGauss的远程访问白名单中。对于MySQL,用户还需要有RELOAD、REPLICATION CLIENT、REPLICATION SLAVE的权限。

根据上面的示例修改default.yml文件,注意这个冒号后面有空格。

本人提供Oracle、MySQL、PG等数据库的培训和考证业务,私聊QQ646634621或微信db_bao,谢谢!

执行迁移

1.初始化迁移过程

开始使用工具做迁移过程。先初始化复制流。

2.复制基础数据

接下来开始复制基础数据。

图片

做完此步骤后,将把MySQL当前的全量数据复制到openGauss。可以在openGauss侧查看全量数据复制后的情况。

数据已复制成功。

图片

3.开启实时同步复制

在MySQL侧插入数据

在openGauss可以马上查询到

图片

新建表插入数据也是可以的:

在MySQL侧新建t1,插入一条数据

在openGauss侧查询

图片

4.结束复制过程及清理资源

Q&A:

q1:

omm用户解决

q2:omm用户执行没有权限

解决 使用omm 用户安装 和进入 python3 source命令

q3:执行(venv) [omm@pekphisprb70593 logs]$ chameleon add_source --config default --source mysql 报错

schema_mapping 的配置项,注意冒号后面有空格

图片

除了基础数据同步,chameleon后续还将支持将视图、触发器、自定义函数、存储过程等数据库对象从MySQL迁移到openGauss。期待一下吧~

参考

https://mp.weixin.qq.com/s/pUv3O65WH0G4k5XEqpRXYQ

标签:

头像

小麦苗

学习或考证,均可联系麦老师,请加微信db_bao或QQ646634621

您可能还喜欢...

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

9 − 1 =

 

嘿,我是小麦,需要帮助随时找我哦
  • 18509239930
  • 个人微信

  • 麦老师QQ聊天
  • 个人邮箱
  • 点击加入QQ群
  • 个人微店

  • 回到顶部
返回顶部