聊聊 PostgreSQL 數據庫的高可用架構

Whoami:5年+金融、政府、醫療領域工作經驗的DBA
Certificate:OCP、PCP
Skill:Oracle、Mysql、PostgreSQL
Platform:CSDN、墨天倫、公衆號(呆呆的私房菜)

閱讀本文可以瞭解 PostgreSQL 數據庫高可用架構相關內容、包括高可用架構設計、國內主流高可用實現方案、分佈式架構等內容。

01 高可用概述

02 高可用設計

hQOLNe

03 其他 HA 方案

一、國內較流行的開源高可用組件(repmgr / patroni+etcd / pacemaker+corosync):

*   1. 優勢:不使用任何額外的端口進行通信,如果要執行切換,必須配置免密 ssh;在主服務器發生故障時可以執行自動故障轉移;對數據庫侵入小,維護起來和正常主備複製基本一致;通過 witness 見證服務器來解決腦裂問題;
    
*   2. 不足:不支持多次 failover;無法從 PostgreSQL 服務關閉的節點檢索另一個節點的狀態;不能在備機單個節點 down 時自動將其拉起。

*   優勢:支持自動 failover 和按需 switchover;支持同步複製下備庫故障時自動降級爲異步複製;支持使用 watchdog 防止腦裂;支持自定義外部 callback 腳本;支持多種常見 DCS 存儲元數據,包括 etcd、zookeeper、consul 等;支持 reset api 和 haproxy 集成;
    
*   不足:與原本運維主備流複製環境差異較大,對數據庫的侵入性大;用戶需要處理 DCS 軟件的設置、管理和升級;需要爲組件通信打開多個端口(patroni 的 reset api 端口、dcs 最少 2 個端口);需要安裝分佈式存儲。

二、數據分片(citus / pgxl / greenplum / tbase):

*   分層:PostgreSQL-XL 將 PostgreSQL 的 SQL 解析層的工作和數據存取層的工作分離到不同的兩種節點上,分別稱爲 Coordinator 節點和 Datanode 節點;
    
*   全局事務:爲了保證分佈模式下事務能夠正確執行,增加了一個 GTM 節點;
    
*   避免單點故障:爲所有節點配置對應的 slave 節點。
    
*   注意:pgxl 10 版本之後便不再提供更新了......

三、多服務器並行執行查詢(pgpool-Ⅱ / pl/proxy 工具):

*   1. 優勢:支持連接池;支持讀寫分離功能;支持高可用切換,通過 watchdog 對其他節點檢查,若出現故障會將備用節點提升爲活動狀態,並接管虛擬 IP;支持負載均衡,允許在多個服務器間分配 select 查詢來減少每個 PostgreSQL 服務器的負載,從而提高系統的整體吞吐量;
    
*   2. 不足:配置較爲複雜,運維難度上升;無法支持所有 PostgreSQL 功能,例如不支持大對象功能;並行查詢存在性能問題,寫操作需要在所有節點上同步執行。
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/mSMlfnu870LBvq2lmlITDw