背景
1、産品的問題點
- PG 大版本更新不支援業務側相容性自動評估
2、問題點背後涉及的技術原理
- PG 的大版本更新方式較多: 支援pg_upgrade導出中繼資料的模式, 邏輯增量定義的模式, 全量導出導入的模式.
- 但是高版本和低版本之間可能存在一些不相容的點:
-
- 插件版本是否不相容
- SQL文法是否不相容, 是否去掉了某些文法, 是否去掉了某些函數.
3、這個問題将影響哪些行業以及業務場景
- 通用, 大版本更新時
-
- 業務想使用大版本的新功能或提升性能,
- 業務使用的資料庫版本太老, 社群已經不支援, 被迫更新到大版本
4、會導緻什麼問題?
- 業務需要自己評估版本更新後業務是否相容.
-
- 通常比較麻煩, 需要去看PG的release notes, 看裡面的大版本更新相容性部分, 通常隻會将與上一個版本的差異, 不會涉及到與更早的版本之間的差異.
- 如果更新跨了很多個大版本, 需要看很多release notes, 比較複雜.
5、業務上應該如何避免這個坑
- 必須搜集所有的SQL、插件、定義等, 根據release notes的大小版本差異逐條比對是否存在不相容的問題.
6、業務上避免這個坑犧牲了什麼, 會引入什麼新的問題
- 比較複雜, 容易出問題.
7、資料庫未來産品疊代如何修複這個坑
- 希望資料庫提供可評估業務側相容性報告的工具, 類似阿裡雲adam(采集中繼資料、應用SQL請求等, 在大版本庫中回放, 或根據已有規則判定相容性), 報告業務運作的SQL , DDL 等在更新到大版本後, 有哪些不相容, 應該怎麼改等.