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