PostgreSQL高可用之Pgpool-II的故障轉移和故障恢復參數詳解


Pgpool-II

故障轉移(failover)是指 Pgpool-II會將無法訪問的PostgreSQL后端節點從集群中分離出去,如果故障的是主機節點,則會提升一個備機節點作為主機繼續提供服務。

Pgpool-II通過使用健康檢查來確認PostgreSQL后端節點的不可訪問性

【健康檢查】

定期進行健康檢查(health check), 健康檢查過程嘗試從Pgpool-II連接 到PostgreSQL節點以確認其健康狀況。

如果連接失敗,則可能是Pgpool-II 和PostgreSQL之間的網絡連接出現問題或PostgreSQL無法正常工作。

Pgpool-II不會區分每種情況,只是確定如果運行狀況檢查失敗,則認為特定的PostgreSQL節點不可用。

【故障恢復參數詳解】

failover_on_backend_error

若failover_on_backend_error為off,Pgpool-II僅報告錯誤,並在出現此類錯誤時斷開會話(但是請注意,當Pgpool-II檢測到PostgreSQL后端服務器的管理性關閉時,它仍會觸發故障轉移 )。

如果客戶端已經連接到Pgpool-II 並且PostgreSQL已關閉(請注意,如果根本沒有客戶端連接到Pgpool-II,關閉PostgreSQL不會觸發故障轉移)

若failover_on_backend_error為on,則觸發故障轉移

failover_command

failover_command通常是一個故障轉移腳本,官方提供的是failover.sh.sample,參數說明如下:

failover_command字符串

指定當PostgreSQL后端節點分離時要運行的用戶命令。 Pgpool-II將以下特殊字符替換為后端特定信息。

failover_command = '/etc/pgpool-II/failover.sh %d %h %p %D %m %H %M %P %r %R %N %S'

 

 

follow_primary_command

follow_primary_command命令用於通過調用pcp_recovery_node命令從新的主數據庫恢復備用數據庫。

follow_primary_command = '/etc/pgpool-II/follow_primary.sh %d %h %p %D %m %H %M %P %r %R'

search_primary_node_timeout

指定發生故障轉移方案時搜索主節點的最長時間(以秒為單位)。 如果在此配置時間內找不到主節點,則Pgpool-II將放棄尋找主節點。默認值為300,將此參數設置為0表示永遠嘗試。

detach_false_primaryboolean

如果設置為on,則分離錯誤的主節點。默認為關閉。

如果沒有主節點,則不會執行檢查。

如果沒有備用節點,而只有一個主節點,則不會執行任何檢查。

如果沒有備用節點,並且有多個主節點,請保留節點ID最小的主節點,並分離其余的主節點。

如果有一個或多個主機和一個或多個備用,通過使用檢查主節點和備用節點之間的連通性pg_stat_wal_receiver 在這種情況下,如果主節點連接到所有備用節點,則該主節點被視為“真”主節點。其他primary被視為“ false” primary,並且如果detach_false_primary為true,則將分離false primaries 如果未找到“ true”主變量,則不會發生任何事情。

 

 

 auto_failback (boolean)

設置為on時,如果備用節點狀態為關閉但流復制正常工作,則備用節點將自動進行故障恢復。當由於臨時網絡故障而使pgpool使備用節點退化時,這很有用。

需要注意使用復制插槽時,auto_failback可能不起作用。流復制可能會停止,原因 是執行failover_command並通過該命令刪除了復制插槽。

auto_failback_interval (integer)

指定自動故障恢復復的執行間隔的最短時間(以秒為單位)。在上一次自動故障恢復之后經過指定的時間之前,不會執行下一個自動故障恢復。例如,當Pgpool-II由於網絡錯誤而頻繁檢測到后端崩潰時,可以通過將此參數設置為足夠大的值來避免重復故障轉移和故障恢復。默認值為60。將此參數設置為0表示不自動故障恢復。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM