PostgreSQL高可用之Pgpool-II的故障转移和故障恢复参数详解

Pgpool-II

故障转移(failover)是指 Pgpool-II会将无法访问的PostgreSQL后端节点从集群中分离出去,如果故障的是主机节点,则会提升一个备机节点作为主机继续提供服务。

Pgpool-II通过使用健康检查来确认PostgreSQL后端节点的不可访问性

【健康检查】

定期进行健康检查(health check), 健康检查过程尝试从Pgpool-II连接 到PostgreSQL节点以确认其健康状况。

如果连接失败,则可能是Pgpool-II 和PostgreSQL之间的网络连接出现问题或PostgreSQL无法正常工作。

Pgpool-II不会区分每种情况,只是确定如果运行状况检查失败,则认为特定的PostgreSQL节点不可用。

【故障恢复参数详解】

failover_on_backend_error

若failover_on_backend_error为off,Pgpool-II仅报告错误,并在出现此类错误时断开会话(但是请注意,当Pgpool-II检测到PostgreSQL后端服务器的管理性关闭时,它仍会触发故障转移 )。

如果客户端已经连接到Pgpool-II 并且PostgreSQL已关闭(请注意,如果根本没有客户端连接到Pgpool-II,关闭PostgreSQL不会触发故障转移)

若failover_on_backend_error为on,则触发故障转移

failover_command

failover_command通常是一个故障转移脚本,官方提供的是failover.sh.sample,参数说明如下:

failover_command字符串

指定当PostgreSQL后端节点分离时要运行的用户命令。 Pgpool-II将以下特殊字符替换为后端特定信息。

failover_command = '/etc/pgpool-II/failover.sh %d %h %p %D %m %H %M %P %r %R %N %S'

follow_primary_command

follow_primary_command命令用于通过调用pcp_recovery_node命令从新的主数据库恢复备用数据库。

follow_primary_command = '/etc/pgpool-II/follow_primary.sh %d %h %p %D %m %H %M %P %r %R'

search_primary_node_timeout

指定发生故障转移方案时搜索主节点的最长时间(以秒为单位)。 如果在此配置时间内找不到主节点,则Pgpool-II将放弃寻找主节点。默认值为300,将此参数设置为0表示永远尝试。

detach_false_primaryboolean

如果设置为on,则分离错误的主节点。默认为关闭。

如果没有主节点,则不会执行检查。

如果没有备用节点,而只有一个主节点,则不会执行任何检查。

如果没有备用节点,并且有多个主节点,请保留节点ID最小的主节点,并分离其余的主节点。

如果有一个或多个主机和一个或多个备用,通过使用检查主节点和备用节点之间的连通性pg_stat_wal_receiver 在这种情况下,如果主节点连接到所有备用节点,则该主节点被视为“真”主节点。其他primary被视为“ false” primary,并且如果detach_false_primary为true,则将分离false primaries 如果未找到“ true”主变量,则不会发生任何事情。

 auto_failback (boolean)

设置为on时,如果备用节点状态为关闭但流复制正常工作,则备用节点将自动进行故障恢复。当由于临时网络故障而使pgpool使备用节点退化时,这很有用。

需要注意使用复制插槽时,auto_failback可能不起作用。流复制可能会停止,原因 是执行failover_command并通过该命令删除了复制插槽。

auto_failback_interval (integer)

指定自动故障恢复复的执行间隔的最短时间(以秒为单位)。在上一次自动故障恢复之后经过指定的时间之前,不会执行下一个自动故障恢复。例如,当Pgpool-II由于网络错误而频繁检测到后端崩溃时,可以通过将此参数设置为足够大的值来避免重复故障转移和故障恢复。默认值为60。将此参数设置为0表示不自动故障恢复。

 

原文地址:https://www.cnblogs.com/mingfan/p/14118211.html