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 库(问题 #117)。

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

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

  • 如果通过 ssh 工作,建议使用 screen 或 tmux 进行升级
  • 使用 chameleon stop_all_replicas --config your_config 停止所有副本进程
  • 使用 pg_dump 备份 schema sch_chameleon,以备不时之需。
  • 使用 pip install pg_chameleon --upgrade 安装升级
  • 使用 chameleon --version 检查版本是否已升级
  • 使用命令 chameleon upgrade_replica_schema --config your_config 升级副本 schema
  • 启动所有副本。

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

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

pip install pg_chameleon==2.0.13

pip install "PyMySQL<0.10.0"