[英]Postgresql 9.2 failover
我已經設置了從主DB到從DB的流復制。 如果主設備關閉,從設備將接管。 復制和故障轉移工作正常。
我有一個使用master數據庫存儲數據的Web應用程序。
一些細節:
我想繼續使用這種復制方法。
問題:
我建議看一下帶有failover_command選項的pgpool。 在那里你可以有一個小的shell腳本來在讀/寫模式下重啟slave。 pgpool
如果你遇到pgpool的一些問題,我跟進進行故障排除的這個過程可能會有所幫助 - pgpool - stracing
PGPool-II做到了這一點。
我在第三台服務器上安裝了PGPool; 一台運行CentOS的監控服務器。 我將運行狀況檢查配置為每10秒運行一次。 failover_command設置為運行一個小shell腳本,如果主服務器出現故障,該腳本將在從屬服務器上生成觸發器文件。 而且效果很好。
為了防止主服務器再次突然啟動,我將為app服務器使用兩個配置文件(一個用於主服務器,一個用於從服務器),並使用slave配置擴展shell腳本以重新啟動應用服務器。
謝謝你的提示!
如果您考慮使用基於Docker的解決方案,請試試PostDock 。
目前我已經在我們的項目中使用docker-compose進行了嘗試,其架構如下所示:
pgmaster (primary node1) --|
|- pgslave1 (node2) --|
| |- pgslave2 (node3) --|----pgpool (master_slave_mode stream)----client
|- pgslave3 (node4) --|
|- pgslave4 (node5) --|
我測試了以下場景,它們都運行良好:
至於客戶端應用程序,這些更改都是透明的。 客戶端只指向pgpool節點,並在所有上述方案中保持正常工作。
注意 :如果您在運行PostDock時遇到問題,可以嘗試我的分叉版PostDock 。
上述架構的一個問題是pgpool是單點故障。 所以我也嘗試使用委派的虛擬IP 為pgpool-II啟用Watchdog,以避免單點故障。
master (primary node1) --\
|- slave1 (node2) ---\ / pgpool1 (active) \
| |- slave2 (node3) ----|---| |----client
|- slave3 (node4) ---/ \ pgpool2 (standby) /
|- slave4 (node5) --/
我測試了以下場景,它們都運行良好:
至於客戶端應用程序,這些更改都是透明的。 客戶端只指向虛擬IP,並在所有上述方案中保持良好的工作狀態。
您可以在看門狗分支的GitHub存儲庫中找到此項目。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.