天天看點

【DB吐槽大會】第76期 - PG 不支援共享存儲多活架構

背景

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的主從架構.