此维护版本改进了对空间数据类型的支持。当目标数据库上安装了 postgis 时,空间数据类型 point
、geometry
、linestring
、polygon
、multipoint
、multilinestring
、geometrycollection
将被转换为 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 索引名称中的空格。
此版本需要升级副本目录,因此,请务必遵循下方提供的升级说明。
chameleon stop_all_replicas --config your_config
命令停止所有副本进程。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"