High-Availability

同步多主機複製 postgresql pgpool 2

  • July 13, 2011

我們想建構一個由兩個 Postgresql 8.4 伺服器組成的系統,前面有 pgpool 2,這將使所有寫入都發送到兩個系統。如果其中一個節點發生故障,它將降級並且 pgpool 會將所有寫入定向到剩餘節點。

從那裡我們可以手動重新同步所有內容並將其全部備份。

我目前正在對此效果進行一些測試,並註意到一些有趣的事情。

我的腳本有一個簡單的循環,可以在數據庫中插入行。當我關閉一台伺服器上的網路介面時,腳本暫停,pgpool 等待來自關閉伺服器的回复,但不會降級,直到其他人嘗試連接。一旦其他人創建了新連接,它將返回一個錯誤,並使伺服器降級。然後,如果我再次執行腳本,它會將寫入定向到剩餘的單個伺服器。

這似乎有點過多的活動需要降級伺服器。我錯過了什麼嗎?這是正常的嗎?

乾杯

標記

我相信您所描述的行為對於 pgpool 來說是正常的 - 當它無法連接到伺服器時它會降低伺服器的性能,但是如果連接已經“建立”,它不會像您預期的那樣迅速死亡(這可能處理瞬態網路故障並避免因“打嗝”而降低環境)。


出於好奇,您是否考慮過 Postgres 9 中可用的流式日誌複製?最新的實現是近乎實時的,允許您在從屬伺服器上執行查詢。我相信同步複製即將到來(或者可能已經實現)。

您將需要一個腳本或手動過程來處理故障(重新啟動“從”伺服器之一作為主伺服器並移動虛擬 IP),但該實現與您從 pgpool 中得到的沒有本質上的不同(重新-當伺服器出現故障時同步等)

這裡最大的優勢是您使用的是內置於 Postgres 伺服器核心的東西,並且它在 9.0 beta 過程中得到了一些相當廣泛的測試和記錄。如果您沒有使其不切實際的限制,這是我事實上的建議。

引用自:https://serverfault.com/questions/289756