此维护版本改进了对空间数据类型的支持。当目标数据库上安装了 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 库(问题 #117)。
感谢 @porshkevich,他通过修剪 PK 索引名称中的空格修复了问题 #115。
此版本需要升级副本目录,因此请务必遵循以下提供的升级说明。
chameleon stop_all_replicas --config your_config
停止所有副本进程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"