openGauss-tools-chameleon:基于 Python 的 MySQL 到 openGauss 实时复制工具项目

用户可使用该项目实现 MySQL 到 openGauss 的数据复制,支持初始全量数据迁移及后续增量数据实时同步。工具通过读取 MySQL binlog 提取数据,在 openGauss 中解码重演,支持多 schema 复制及源目标 schema 名称映射,采用守护进程实现实时复制。【此简介由AI生成】

分支8Tags6
文件最后提交记录最后更新时间
First commit. Original code from pg_chameleon github.4 年前
往使用指南添加复制数据库对象部分的说明3 年前
!304 全量迁移完成之后保留断点信息文件用于开发分析20 天前
修复全量迁移结束后进度文件存在二进制的问题2 年前
First commit. Original code from pg_chameleon github.4 年前
First commit. Original code from pg_chameleon github.4 年前
First commit. Original code from pg_chameleon github.4 年前
First commit. Original code from pg_chameleon github.4 年前
First commit. Original code from pg_chameleon github.4 年前
First commit. Original code from pg_chameleon github.4 年前
离线迁移支持视图、触发器、函数、存储过程等对象4 年前
First commit. Original code from pg_chameleon github.4 年前
英文README文档翻译回稿合入22 天前
First commit. Original code from pg_chameleon github.4 年前
更新chameleon版本为7.0.0rc27 个月前
更新chameleon版本为7.0.0rc27 个月前
添加变色龙环境变量清理脚本1 年前
更新chameleon版本为7.0.0rc27 个月前
First commit. Original code from pg_chameleon github.4 年前
First commit. Original code from pg_chameleon github.4 年前
更新chameleon版本为7.0.0rc27 个月前
First commit. Original code from pg_chameleon github.4 年前

openGauss-tools-chameleon

介绍

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

chameleon初始代码源自pg_chameleon (https://github.com/the4thdoctor/pg_chameleon).

特色

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

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

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

安装教程

  1. 安装环境: Linux, FreeBSD, OpenBSD. Python: CPython 3.5+, java,maven,git
  2. 源数据库要求:MySQL 5.5+。目的数据库要求:openGauss 2.1.0+
  3. 安装命令(建议在python虚拟环境中安装):python setup.py install

使用说明

⦁ 创建python虚拟环境 (例如 python3 -m venv venv)

⦁ 激活python虚拟环境 (例如 source venv/bin/activate)

⦁ 升级pip pip install pip --upgrade

⦁ 安装chameleon python setup.py install

⦁ 在MySQL侧创建用于复制的用户 (例如 usr_replica)

⦁ 给用户赋予被复制数据库的访问权限(例如 GRANT ALL ON sakila.* TO 'usr_replica'😉

⦁ 给用户赋予RELOAD权限(例如 GRANT RELOAD ON *.* to 'usr_replica'😉

⦁ 给用户赋予REPLICATION CLIENT权限(例如 GRANT REPLICATION CLIENT ON *.* to 'usr_replica'😉

⦁ 给用户赋予REPLICATION SLAVE权限(例如 GRANT REPLICATION SLAVE ON *.* to 'usr_replica'😉

参与贡献

  1. Fork 本仓库
  2. 新建 Feat_xxx 分支
  3. 提交代码
  4. 新建 Pull Request

项目介绍

用户可使用该项目实现 MySQL 到 openGauss 的数据复制,支持初始全量数据迁移及后续增量数据实时同步。工具通过读取 MySQL binlog 提取数据,在 openGauss 中解码重演,支持多 schema 复制及源目标 schema 名称映射,采用守护进程实现实时复制。【此简介由AI生成】

定制我的领域