Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 關於android開發 >> pgpool的健康檢查和failover代碼

pgpool的健康檢查和failover代碼

編輯:關於android開發

pgpool的健康檢查和failover代碼


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

main()  PgpoolMain()    processState = PERFORMING_HEALTH_CHECK;      do_health_check()        make_persistent_db_connection()          discard_persistent_db_connection() 

如果連接創建失敗,會拋出異常,進而跳轉到統一的異常處理點,如果超過重試次數,將後端降級,並最終調用pgpool.conf配置文件裡設置的failover_command。

main()  PgpoolMain()    if(processState == PERFORMING_HEALTH_CHECK)      process_backend_health_check_failure()        degenerate_backend_set(&health_check_node_id,1)          degenerate_backend_set_ex()            register_node_operation_request(NODE_DOWN_REQUEST)              failover()                trigger_failover_command() 

failover()的切換過程

  1. 再次確認後端狀態,如無效更新後端的backend_status為CON_DOWN
  2. 獲取第一個狀態正常的後端作為new_master
  3. kill所有子進程(這是基於pgpool做HA的一個很大的優勢,可以可靠的切斷所有來自客戶端的連接,隔離故障節點)
  4. 對down掉的後端執行pgpool.conf配置文件裡設置的failover_command
  5. 如果down掉的是primary,搜索新的primary,即第一個"SELECT pg_is_in_recovery()"返回不是t的後端。
  6. 重啟所有子進程
  7. 發送restart通知給worker進程
  8. 通知PCP子進程failover/failback完成
  9. 發送restart通知給pcp進程

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved