健康檢查
通過建立到後端的連接配接實施健康檢查
如果連接配接建立失敗,會抛出異常,進而跳轉到統一的異常處理點,如果超過重試次數,将後端降級,并最終調用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程序