2025年9月25日: PostgreSQL 18 发布!

pg_chameleon 2.0.14

发布于 2020-07-26,作者 Federico Campoli
相关开源项目

此维护版本改进了对空间数据类型的支持。当目标数据库上安装了 postgis 时,空间数据类型 pointgeometrylinestringpolygonmultipointmultilinestringgeometrycollection 将被转换为 geometry,并且数据将使用 Well-Known Binary (WKB) 格式进行复制。由于 MySQL 对 WKB 的实现不符合标准,pg_chameleon 会在将解码后的二进制数据发送到 PostgreSQL 之前去除前 4 个字节。

keep_existing_schema 设置为 yes 时,现在会在 init_replica 过程中删除并重新创建索引和主键。外键也会被删除,并在副本达到一致状态时重新创建。这样,即使存在外键,init_replica 也能成功完成,并且速度与通常的 init_replica 一样快。

setup.py 现在强制 PyMySQL 版本为 <0.10.0,因为它会破坏 python-mysql-replication 库(issue #117)。

感谢 @porshkevich 修复了 issue #115,通过修剪 PK 索引名称中的空格。

此版本需要升级副本目录,因此,请务必遵循下方提供的升级说明。

  • 如果通过 ssh 进行操作,建议使用 screen 或 tmux 进行升级。
  • 使用 chameleon stop_all_replicas --config your_config 命令停止所有副本进程。
  • 为安全起见,请使用 pg_dump 备份 sch_chameleon 模式。
  • 使用 pip install pg_chameleon --upgrade 命令安装升级。
  • 使用 chameleon --version 命令检查版本是否已升级。
  • 使用命令 chameleon upgrade_replica_schema --config your_config 升级副本模式。
  • 启动所有副本。

如果由于正在运行或出错的副本而无法升级副本目录,可以使用命令 chameleon enable_replica --source source_name 重置状态。

如果仍然无法升级目录,则可以将 pgchameleon 降级到之前的版本。请注意,您可能需要手动安装 PyMySQL 来解决 0.10.0 版本的问题。

pip install pg_chameleon==2.0.13

pip install "PyMySQL<0.10.0"