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