mysql到postgresql的复制和迁移

pg_chameleon的Python项目详细描述


https://img.shields.io/github/issues/the4thdoctor/pg_chameleon.svghttps://img.shields.io/github/forks/the4thdoctor/pg_chameleon.svghttps://img.shields.io/github/stars/the4thdoctor/pg_chameleon.svghttps://img.shields.io/badge/license-BSD-blue.svghttps://api.travis-ci.org/the4thdoctor/pg_chameleon.svg?branch=ver2.0

pg_chameleon是用python 3编写的mysql到postgresql的复制系统。 系统使用mysql复制库从mysql中提取行镜像,作为jsonb存储到postgresql中。 pl/pgsql函数解码jsonb值并根据postgresql数据库重放更改。

变色龙2.0is available on pypi

文档is available on pgchameleon.org

实时聊天available on gitter

请提交您的bug reports on GitHub

要求

副本主机

操作系统:Linux、FreeBSD、OpenBSD python:cpython 3.3+

建筑文档的选项

原始数据库

MySQL:5.5以上

目的地数据库

PostgreSQL:9.5+

示例场景

  • 分析
  • 迁移
  • 来自多个MySQL数据库的数据聚合

功能

  • 从多个MySQL模式中读取并将其还原到目标PostgreSQL数据库中源架构名称和目标架构名称可以不同。
  • 设置PostgreSQL作为MySQL从机
  • 支持枚举和二进制数据类型。
  • 基本DDL支持(创建/删除/更改表、删除主键/截断、重命名)。
  • 丢弃来自副本的垃圾数据
  • 复制品的保守方法。生成错误的表将自动从副本中排除。
  • 可以刷新单个表或单个架构
  • 基本副本监视。
  • 从MySQL分离副本以支持迁移
  • 数据类型覆盖(例如tinyint(1)到boolean)
  • 守护初始化副本进程
  • 具有两个独立子进程的守护副本进程,一个用于读取,另一个用于重播
  • 滚动条集成

注意事项

复制副本要求表具有主键或唯一键不带主键/唯一键的表在init_复制过程中初始化,但不复制

拷贝最大内存只是一个估计值。平均行大小是从mysql的informations模式中提取的,可能已经过时。 如果内存错误导致复制过程失败,请检查失败表的行长度和每个切片的行数。

根据mysql复制的需要,Python 3仅在3.3版中受支持

延迟是使用上次接收的事件时间戳和PostgreSQL时间戳确定的。如果mysql是只读的,则延迟将增加,因为 没有副本事件进入

分离副本进程重置postgres中的序列以使数据库独立工作。从源MySQL模式提取外键,并在初始时创建为无效创建外键时不使用ON DELETE或ON UPDATE子句。 第二次运行尝试验证外键。如果发生错误,它将根据源配置注销。

设置

  • 创建虚拟环境(例如python3-m venv venv)
  • 激活虚拟环境(例如,source venv/bin/Activate)
  • 使用pip install pip升级pip–升级
  • pip安装pg廑chameleon
  • 在mysql上为副本创建一个用户(例如usr_副本)
  • 在复制的数据库上授予对usr的访问权限(例如,在sakila上授予ALL.*到“usr_replica”;)
  • 向用户授予重新加载权限(例如,将*.*上的重新加载授予“usr_replica”;)
  • 向用户授予复制客户端权限(例如,将*.*上的复制客户端授予“usr_replica”;)
  • 授予向用户授予复制从机权限(例如,将*.*上的复制从机授予“usr_replica”;)

配置目录

现在正确支持系统范围的安装。

配置是用命令chameleon set_configuration_files在$HOME/.pg_chameleon中设置的。 目录中有三个子目录。

  • 配置是存储配置文件的位置
  • pid是创建副本pid文件的位置。它可以在配置文件中更改
  • 如果log_dest是文件,则logs是保存副本日志的位置。它可以在配置文件中更改

您应该使用config-example.yaml作为其他配置文件的模板。 查看configuration file reference以获得概述。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
使用jaxb2annotateplugin和XJC工具的java自定义注释   java组织。xeustechnologies。jcl无法加载WstxInputFactory类   java JUnit在格式化字符串上比较失败   java Bukkit配置部分getKeys   如何关闭Java流?   java Struts2正则表达式配置   链式事务注释的java奇怪行为   java在两个JButton之间使用变量   java签署APK时内容会发生什么变化?   java LWJGL:Slick:3D世界中的绘图字体   如何分解Java数组?   在Java MySql中处理多个过滤器   java如何在Firebase数据库中跳过初始OnChildaded事件触发   java如何在PreviewView中使用CameraX?   在子类#中重写父类后访问父类原始方法的java已解决   java找不到类型的属性   游戏框架游戏!框架+Java