POSTGRESQL 高可用 Patroni VS Repmgr 到底哪家強

在衆多 postgresql 高可用模式中,主要的參與者有兩位, Patroni VS repmgr 基於這二者的功能優點以及缺點相信大部分人都不是太明確,下面將根據兩篇翻譯的文字合併,來對兩個高可用的程序來做一個比較, cons and pros。 

1  Repmgr 是一款開源的基於 postgres 複製基礎上的高可用軟件,他基於 2ndQuadrant 公司開發而來,提供完整的基於從安裝到部署,從設置到管理以及監控的一體化的 postgresql 高可用方案,並且支持手動的 POSTGRESQL 高可用切換和自動切換的方案,支持看門狗的模式。

通過 repmgr 程序來對服務在數據庫內進行註冊,並且通過 repmgrd 來進行多點的 failover 監控,可以在切換的過程中完成選主,與損壞節點再次加入到集羣中,作爲從庫的一體化方案。並且提供延遲的方案,以預防網絡不穩定帶來的誤切換的問題。

在集羣中的節點數爲偶數的情況下 repmgr 本身通過 witness 見證服務器來解決腦裂的問題,見證服務器是一個節點,只考慮多數投票計數。

2  Patroni 

Patroni 本身起源於一個 Governor 的分支,來自於一個 compose 項目,在 Zalando 中被改進的原來越好用。https://github.com/zalando/patroni,這是一個 python 編寫的開源工具組件,通過他來進行 POSTGRESQL 的集羣高可用性的支持,通過分佈式存儲的方式來完成一致性模型,目前一般配合 etcd 基於 raft 協議的分佈式系統來使用。Patroni 確保 PostgreSQL HA 集羣的端到端設置,包括流複製。它支持創建備用節點的各種方式,工作方式類似於模板,可以根據您的需要進行定製。通過 patroni 可以自動完成 postgresql 服務失敗自動拉起,以及主從節點的切換和失敗節點重新加入等功能。同時基於分佈式存儲的特性可以直接防止腦裂的發生。並且通過分佈式存儲來獲得 leader 節點,確保在任意時間只有一個主節點進行對外服務。

通過上面的介紹,可以比對出二者不不同點

1  Patroni 本身是一個開源項目目前在 Zalando 手裏進行維護和發展

    Repmgr 是 PG 數據庫開發公司 2 象限的產品,目前開源

2  Patroni 本身通過 DCS 來進行數據節點的選主和高可用信息的存儲,所以      選擇分佈式存儲對 patroni 本身來說是重要的。

    Repmgr 是本身並不使用分佈式協議,採用的是傳統類比傳統數據庫的方      式來進行高可用的設置,一般對於雙機的高可用是支持的

比對                     Patrnoi                                 repmgr

兩節點支持          不建議,起步三節點                 支持                       

版本持續更新       支持                                         支持

需要安裝分佈式    需要                                        利用 POSTGRESQL 存儲

存儲

支持多種數據節     支持                                         pg_bacebackup

點添加方式

需要各個節點免密   需要                                        需要

有管理命令             有                                            有

手動切換                 可以                                         強

自動切換                 可以                                        啓用 repmgrd

**多次 failover **          可以                                        不可以

配置文件修改          一般                                         靈活

方便靈活

基於上面的一些點我們可以來詳細的說一下

1  如果僅僅是想安裝類似 ORACLE  DG ADG 這樣的方式,同時想做一個熱機主備的方式,repmgr  是一個好的選擇,Patrnoi 本身對主機的節點的數量沒有要求,但一般安裝分佈式存儲如果使用通用的 ETCD 則必須包含 ETCD 基於 raft 協議,必須是三臺起步。

2  需要安裝分佈式存儲,Patrnoi 本身是需要安裝 etcd 或其他的分佈式存儲軟件的,repmgr 本身的一些日誌信息以及節點信息是安裝在本地節點 PG 中的 repmgr 數據庫裏面的,所以不需要其他軟件的安裝

3 手動切換中,由於 repmgr 是通過 repmgrd 來進行監控並自動進行切換的,所以停止 repmgrd 程序本身,通過 repmgr 命令直接啓動切換步驟即可,patrnoi 在此方面可以通過命令來進行切換

4  對於 如果在系統中由於不穩定導致網絡丟包或者主機頻繁切換,patroni 是可以支持,基於分佈式存儲來進行主機的選舉,repmgr 本身無法接受此方式,一次切換後,需要重置一些配置後,恢復正常工作

5  參數的配置的靈活性,patrnoi 對於參數的修改本身是有要求的,需要通過程序本身進行參數的修改然後加載或者通過 patrnoi 本身來進行 reload, 對於需要重啓的情況不十分靈活,要求多, 對於 REPMGR,對參數的修改沒有特殊要求。

實際上兩者的高可用方式都有可圈可點的地方,本期就先到這裏,下期會對兩個高可用的軟件進行更細緻功能對比。

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/v5Q7PcfrbgfsQ2bCYLzy1w