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 備份 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"