天天看點

pgpool的健康檢查和failover代碼

健康檢查

通過建立到後端的連接配接實施健康檢查

如果連接配接建立失敗,會抛出異常,進而跳轉到統一的異常處理點,如果超過重試次數,将後端降級,并最終調用pgpool.conf配置檔案裡設定的failover_command。

failover()的切換過程

再次确認後端狀态,如無效更新後端的backend_status為CON_DOWN

擷取第一個狀态正常的後端作為new_master

kill所有子程序(這是基于pgpool做HA的一個很大的優勢,可以可靠的切斷所有來自用戶端的連接配接,隔離故障節點)

對down掉的後端執行pgpool.conf配置檔案裡設定的failover_command

如果down掉的是primary,搜尋新的primary,即第一個"SELECT pg_is_in_recovery()"傳回不是t的後端。

重新開機所有子程序

發送restart通知給worker程序

通知PCP子程序failover/failback完成

發送restart通知給pcp程序