Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 故障postgresql主节点的自动恢复无法与pgpool II一起使用_Database_Centos6_Postgresql 9.4_Pgpool_Repmgr - Fatal编程技术网

Database 故障postgresql主节点的自动恢复无法与pgpool II一起使用

Database 故障postgresql主节点的自动恢复无法与pgpool II一起使用,database,centos6,postgresql-9.4,pgpool,repmgr,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

我是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)  
我已按照进行设置

当我关闭主节点时,故障切换将成功进行,从节点将作为新的主节点接管。
故障转移后,我必须手动恢复故障节点,并将其与新的主节点同步

我想自动化恢复过程。

pgpool节点上的pgpool.conf文件包含参数recovery\u 1st\u stage\u命令。 我在线搜索了源代码,发现参数“recovery\u 1st\u stage\u command”应该在pgpool节点上的配置文件pgpool.conf中设置

我已经设置了参数recovery\u 1st\u stage\u command='basebackup.sh'。 我已将脚本'basebackup.sh'文件放置在数据目录'/var/lib/pgsql/9.4/data'下的Postgresql节点上

此外,我还将脚本“pgpool\u remote\u start”放置在“/var/lib/pgsql/9.4/data”目录下的数据库节点上

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

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

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

basebackup.sh

#/bin/bash
#第一阶段恢复
#$1数据目录
#2美元
#3美元
#因为我使用repmgr,所以我不需要知道datadir(master)$1
恢复节点=$2
群集路径=$3
#repmgr需要知道主机的ip
MASTERNODE=`/sbin/ifconfig eth0 | grep inet | awk'{print$2}'| sed's/addr://'`
cmd1=`ssh postgres@$RECOVERY_NODE“repmgr-D$CLUSTER_PATH--强制备用克隆$MASTERNODE”`

echo$cmd1
我认为这是设计好的。当主设备出现故障时,会进行故障切换,因此从设备会升级。但旧的主人不会自动恢复为奴隶。相反,故障转移脚本通常会尝试永久关闭发生故障的主机,并禁止其重新启动(如果可能,可能是节点已关闭,无法连接),以避免大脑分裂


如果确实需要,那么可以修改故障转移脚本,使其在升级从机后在旧主机上执行pcp_恢复操作。但实际上你正在做的是一个转换。。。这应该作为一系列步骤编写脚本。故障转移适用于主服务器出现实际问题时(如机器没有响应)

我发现故障转移后,备用节点成功升级为新的主服务器。现在,我必须在Pgpool节点上手动运行pcp_recovery_node命令。此命令在新主服务器上执行basebackup.sh脚本,并成功恢复故障节点并将节点加入群集。我想自动执行此pcp\u recovery\u节点命令。