如何使用pg_chameleon迁移MySQL数据库至openGauss

pg_chameleon是将MySQL实时复制到openGauss的工具,通过读取MySQL binlog实现在线迁移。文章详细介绍了配置和使用过程,包括解决pg_chameleon在openGauss上的兼容性问题,以及迁移步骤,如创建用户、数据库,开启MySQL复制,初始化和启动复制流等。
摘要由CSDN通过智能技术生成

pg_chameleon介绍

pg_chameleon是一个用Python 3编写的实时复制工具,经过内部适配,目前支持MySQL迁移到openGauss。工具使用mysql-replication库从MySQL中提取row images,这些row images将以jsonb格式被存储到openGauss中。在openGauss中会执行一个pl/pgsql函数,解码jsonb并将更改重演到openGauss。同时,工具通过一次初始化配置,使用只读模式,将MySQL的全量数据拉取到openGauss,使得该工具提供了初始全量数据的复制以及后续增量数据的实时在线复制功能。pg_chameleon的特色包括:

  • 通过读取MySQL的binlog,提供实时在线复制的功能。

  • 支持从多个MySQL schema读取数据,并将其恢复到目标openGauss数据库中。源schema和目标schema可以使用不同的名称。

  • 通过守护进程实现实时复制,包含两个子进程,一个负责读取MySQL侧的日志,一个负责在openGauss侧重演变更。

使用pg_chameleon将MySQL数据库迁移至openGauss,通过pg_chameleon的实时复制能力,可以大大降低系统切换数据库时的停服时间。

pg_chameleon在openGauss上的使用注意事项

  1. pg_chameleon依赖psycopg2,psycopg2内部通过pg_config检查PostgreSQL版本号,限制低版本PostgreSQL使用该驱动。而openGauss的pg_config返回的是openGauss的版本号(当前是 openGauss 2.0.0),会导致该驱动报版本错误,“Psycopg requires PostgreSQL client library (libpq) >= 9.1”。解决方案为通过源码编译使用psycopg2,并去掉源码头文件 psycopg/psycopg.h 中的相关限制。

  2. pg_chameleon通过设置LOCK_TIMEOUT GUC参数限制在PostgreSQL中的等锁的超时时间。openGauss不支持该参数(openGauss支持类似的GUC参数lockwait_timeout,但是需要管理员权限设置)。需要将pg_chameleon源码中的相关设置去掉。

  3. pg_chameleon用到了upsert语法,用来指定发生违反约束时的替换动作。openGauss支持的upsert功能语法与PostgreSQL的语法不同。openGauss的语法是 ON DUPLICATE KEY UPDATE { column_name = { expression | DEFAULT } } [, ...]。PostgreSQL的语法是 ON CONFLICT [ conflict_targ

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值