背景
1、産品的問題點
- PG 不支援共享存儲多活(類似oracle rac)架構
2、問題點背後涉及的技術原理
- PG 一個資料庫執行個體一份存儲, 無法支援多個活躍執行個體共用一份存儲.
3、這個問題将影響哪些行業以及業務場景
- 通用
4、會導緻什麼問題?
- 目前PG可以使用共享存儲, 但是同時隻能1個打開的執行個體, 不支援多活.
-
- 無法擴充計算能力.
- 為了提高高可用, 比較流行的架構是主從複制, 或者單計算節點的共享存儲.
-
- 主從複制HA的問題: 1、無法保障0丢失 2、無法支援邏輯複制HA(slot無法failover) 3、HA可能出現腦裂, HA可能需要重建或rewind, 比較複雜 4、HA切換會導緻使用者連接配接斷開重連
- 三節點的主從架構: 1、可以保障0丢失, 但是成本高 2、無法支援邏輯複制HA(slot無法failover)
- 目前PG為了提高讀能力需要建立隻讀執行個體,
-
- 每個隻讀執行個體都需要1份與主執行個體同樣的存儲, 隻讀執行個體多時, 存儲成本巨大.
- 由于隻讀執行個體需要回放完整的WAL, 高壓下延遲可能很高
為了提高寫能力, 須拆庫.
-
- 拆庫方案導緻無法完全相容單節點的資料庫feature, 例如 分析, JOIN, 觸發器、序列 等支援可能沒有那麼友好.
5、業務上應該如何避免這個坑
- 基本無解
6、業務上避免這個坑犧牲了什麼, 會引入什麼新的問題
7、資料庫未來産品疊代如何修複這個坑
- PolarDB for PostgreSQL 已開源(類似Oracle RAC架構, 共享存儲, 多計算節點多活, 目前支援一寫多讀) - 可用性、可靠性、易用性、擴充性、彈性優于目前PG的主從架構.
-
- https://github.com/alibaba/PolarDB-for-PostgreSQL
- 希望盡快跟上PG社群14版本, 同時支援Greenplum MPP功能, 列存儲, 多寫能力. (做到讀、寫同時可擴充, 同時做到HTAP.)
- 具體看開源項目的roadmap