此維護版本改進了對空間資料類型的支援。當目標資料庫上安裝了 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
升級副本 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"