Postgresql

PostgreSQL 上的流式複制和故障轉移

  • July 29, 2012

我正在對 PostgreSQL 複製進行概念驗證。在論壇討論之後,我們決定使用流複製,因為與其他解決方案相比,性能很好。PostgreSQL 不為流複製提供自動故障轉移。我們可以使用觸發器文件將slave切換為master,但它是不可管理的。所以我想要一個具有自動故障轉移和高可用性的解決方案。

有不同的解決方案:

  1. 複製品
  2. Linux 心跳
  3. Pgpool-II(僅用於自動故障轉移)
  4. 萬一您使用的任何其他工具。

我的問題是應該使用哪種解決方案?

在我們的商店中,我們選擇了 repmgr 和 pgbouncer 而不是 pgpool。repmgr 有一些很好的工具來設置和維護複製數據庫伺服器的集群。在我們的例子中,1 個主節點和 2 個從節點(一個故障轉移和一個實時讀取性能測試可以成為新主節點的故障轉移)。pgpool 在配置更改方面存在問題,在大多數情況下,您必須重新啟動服務,因此您有一些停機時間。當您需要 24x7x365 可用性時,這是一個問題。

repmgrd(守護程序)有助於在故障轉移後選擇新的主節點,您真的不希望出現腦裂的情況。我們有一個主數據庫的虛擬 IP 地址,即當時的主數據庫。當另一台伺服器成為主伺服器時,這是唯一使用此地址的伺服器。每個數據庫伺服器也有它自己的用於只讀查詢的 IP 地址。

repmgr 由最初創建流複製的同一個人維護,因此他們知道他們在談論什麼。2.0 版即將發布。

為最壞的情況做好準備,通過拔掉一些電源和網路插頭進行一些認真的測試!當出現問題時,許多其他事情已經出現問題,當你負擔不起時,它們會在你背後咬你一口。

複製是一回事,在一些嚴重問題之後進行有效的故障轉移是另一回事。

我們同時使用兩種不同的解決方案……

用於同步複製的 Pgpool-II 和用於非同步(觸發)複製的 Slony2。

性能非常好

引用自:https://dba.stackexchange.com/questions/10386