pgpool II

时间:2016-09-07 17:00:46

标签: database centos6 postgresql-9.4 pgpool repmgr

我是Postgresql和Pgpool II设置的新手。我已经使用Pgpool和Repmgr配置了Postgresql HA /负载均衡。

The setup consist of 3 nodes and verison of Application and OS is as mentioned below:  
**Pgpool node** => 192.168.0.4, **Postgresql Nodes** => 192.168.0.6, 192.168.0.7   
**OS version** => CentOS 6.8 (On all the 3 nodes)  
**Pgpool II version** =>  pgpool-II version 3.5.0 (ekieboshi).  
**Postgresql Version** => PostgreSQL 9.4.8  
**Repmgr Version** => repmgr 3.1.3 (PostgreSQL 9.4.8)  

我已按照link进行设置。

当我关闭主节点时,故障转移成功发生,Slave节点接管为新的主节点。
故障转移后,我必须手动恢复故障节点并将其与新的主节点同步。

我想自动执行恢复过程。

pgpool节点上的 pgpool.conf 文件包含参数 recovery_1st_stage_command 。 我在线搜索了这些来源,发现应该在Pgpool节点上的配置文件pgpool.conf中设置参数" recovery_1st_stage_command"

我已将参数设置为 recovery_1st_stage_command =' basebackup.sh' 。 我已将脚本' basebackup.sh' 文件放在数据目录' / var / lib下的 Postgresql节点上/pgsql/9.4/data' 即可。

此外,我已经放置了脚本' pgpool_remote_start'在目录' /var/lib/pgsql/9.4/data'下的数据库节点上。

还在数据库节点上创建了pgpool扩展pgpool_recovery和pgpool_adm。

当主节点停止时,故障转移发生但恢复脚本' basebackup.sh'未执行。
我已经检查了pgpool日志并启用了调试级别。仍然无法找到脚本是否被执行。

请帮我自动在线恢复故障节点。找到我使用的脚本。

basebackup.sh



#!/bin/bash
# first stage recovery
# $1 datadir
# $2 desthost
# $3 destdir

#as I'm using repmgr it's not necessary for me to know datadir(master) $1
RECOVERY_NODE=$2
CLUSTER_PATH=$3
#repmgr needs to know the master's ip
MASTERNODE=`/sbin/ifconfig eth0 | grep inet | awk '{print $2}' | sed 's/addr://'`

cmd1=`ssh postgres@$RECOVERY_NODE "repmgr -D $CLUSTER_PATH --force standby clone $MASTERNODE"`
echo $cmd1




pgpool_remote_start脚本。



#! /bin/sh

if [ $# -ne 2 ]
then
    echo "pgpool_remote_start remote_host remote_datadir"
    exit 1
fi

DEST=$1
DESTDIR=$2
PGCTL=/usr/pgsql-9.4/bin/pg_ctl

ssh -T $DEST $PGCTL -w -D $DESTDIR start 2>/dev/null 1>/dev/null < /dev/null &
&#13;
&#13;
&#13;

感谢。

1 个答案:

答案 0 :(得分:1)

我认为这是设计的。当主设备发生故障时,会有故障转移,因此从设备会被提升。但是旧的主人不会自动恢复为奴隶。相反,通常故障转移脚本将尝试关闭故障主设备,并禁止重启(如果可能,节点可能已关闭且无法连接),这样可以避免裂脑。

如果您真的需要,那么您可以修改故障转移脚本,以便在提升从属设备后对旧主设备执行pcp_recovery操作。但是,你实际上正在做的是切换......这应该是一系列步骤。故障转移是指主机存在实际问题(如机器无响应)