10. 容錯移轉情境
可能的容錯移轉情境以及此部署對於此類情境的預期回應。
情境 1:PostgreSQL 主節點失敗
當 node0 (目前的 PostgreSQL 主節點) 失敗時,會自動發生下列動作:
Pgpool 會開始執行 /etc/pgpool-II/failover.sh
PostgreSQL node1 會被選為新的主節點。
Pgpool-II 主節點將遠端登入 node1 並將其升級為主節點。
預期手動介入
由系統管理員執行的動作:
審核 node0 上的記錄以確定伺服器的健康狀況。
視需要修復伺服器。
確定伺服器健康狀況良好之後:
在 node0 上,執行 start_replication 指令集以使 node0 跟隨 node2 (IP 位址 10.91.9.41 即 node2 在此範例中的 IP):
/db/bin/start_replication.sh 10.91.9.41
在 node0 上啟動 PostgreSQL 服務
sudo systemctl start postgresql-10.x
使用 PCP 指令將 node0 新增回正常狀態。
pcp_attach_node -h /var/run/pgpoolpcp -n 0
情境 2:PostgreSQL 第一個待命節點失敗
當 node1 (目前的 PostgreSQL 主要待命節點) 失敗時,將會自動發生下列動作:
Pgpool 會開始執行 '/etcpgpool-II/failover.sh'。
PostgreSQL node2 將被選為主節點的主要待命節點 (此範例中為 node0)。
Pgpool 將遠端登入 node2 並將其重定至 node0。
node2 現在為 node0 的待命節點。
預期手動介入
由系統管理員執行的動作:
審核 node1 上的記錄以確定伺服器的健康狀況。
視需要修復伺服器。
確定伺服器健康狀況良好之後:
在 node1 上,執行 start_replication 指令集以使 node1 跟隨 node2 (IP 位址 10.91.9.41 即 node2 在此範例中的 IP):
/db/bin/start_replication.sh 10.91.9.41
在 node1 上啟動 PostgreSQL 服務
sudo systemctl start postgresql-10.x
使用 PCP 指令將 node1 新增回正常狀態。
pcp_attach_node -h /var/run/pgpoolpcp -n 1
情境 3:PostgreSQL 第二個待命節點失敗
當 node2 (目前的 PostgreSQL 次要待命節點) 失敗時,將會自動發生下列動作:
Pgpool 會開始執行 '/etcpgpool-II/failover.sh'。
沒有附加動作,因為 node2 不會對目前的主節點和待命節點操作產生影響。
預期手動介入
由系統管理員執行的動作:
審核 node2 上的記錄以確定伺服器的健康狀況。
視需要修復伺服器。
確定伺服器健康狀況良好之後:
在 node2 上,執行 start_replication 指令集以使 node2 與 node1 重新同步處理 (IP 位址 10.91.9.24 即 node1 在此範例中的 IP):
/db/bin/start_replication.sh 10.91.9.24
在 node2 上啟動 PostgreSQL 服務
sudo systemctl start postgresql-10.x
使用 PCP 指令將 node2 新增回正常狀態。
pcp_attach_node -h /var/run/pgpoolpcp -n 2