PGpool 升级为 master 并且 Slaves 不会在失败时复制

PGpool Promote to master and Slaves wont replicate on failure

(版本 pgpool-II-pg93-3.4.0-3pgdg.rhel6.x86_64.rpm)

之前在网上看到过一些关于这个的讨论,但是一直没找到解决方法

我有 2 个 pgpool 服务器 运行 流复制和负载平衡。他们连接到 3 个 postgres 服务器。 2 个是虚拟机和 1 个物理机。

我更希望物理机作为主服务器。我已经使用 pcp_promote_node 命令进行了测试,我看到显示 pool_nodes;将节点 I select 显示为主要节点,但是在 postgres 端显示命令 SELECT pg_is_in_recovery();显示该服务器仍在恢复中。

所有pcp_promote命令所做的,就是分离主节点。然后阻止插入数据库。

其次,如果主服务器发生故障,另一台服务器确实成为主服务器,但是另一个从服务器对此一无所知,并且在我从新主服务器恢复之前不会复制任何新数据。

是否有解决上述 2 个问题的方法。如果您需要更多信息,例如日志等,也请告诉我。

谢谢

好的。按照设计,pgpool 会执行上述操作。

pgpool.conf 文件中的 follow_master_command 是解决此问题所需要的。

我使用以下脚本(follow_master.sh,我将其放在 /etc/pgpool-II 文件夹中)

#!/bin/sh

################
##
##  = node id
##  = Old master node id
##  = node hostname
##
############### 
PGPOOLIP=10.**.**.**    
PGUSER=postgres
PGPASS=*************
PGHOME=/var/lib/pgsql/9.3
REMOTE_PGDATA=/var/lib/pgsql/9.3/data

if [  =  ]; then
        /usr/bin/pcp_detach_node 10 $PGPOOLIP 9898 $PGUSER $PGPASS 
else
        sleep 5
        ssh -T postgres@ "
        LD_LIBRARY_PATH=$PGHOME/lib:LD_LIBRARH_PATH;
        $PGHOME/bin/pg_ctl -w -D $REMOTE_PGDATA stop"
        /usr/bin/pcp_detach_node 10 $PGPOOLIP 9898 $PGUSER $PGPASS 
        /usr/bin/pcp_recovery_node 10 $PGPOOLIP 9898 $PGUSER $PGPASS 
        /usr/bin/pcp_attach_node 10 $PGPOOLIP 9898 $PGUSER $PGPASS 
fi

我已经完成测试,似乎工作正常。

我希望这对以后的人有所帮助。

谢谢

罗伯