pgpool在pcp_attach_node之后丢失了master

问题描述 投票:1回答:1

我有3个Postgresql数据库节点(node0,node1,node2,版本9.4)和1个pgpool节点(版本3.7)

步骤1:

1.1)node0是primary,node1和node2是standby。

1.2)“show pool_nodes”和“select * from pg_stat_replication”按预期工作。

1.3)“插入”和“选择”按预期工作。

第2步:

2.1)我手动停止了node0中的postgresql服务。

2.2)PGPool运行故障转移脚本,node1成为主/ node2变为备用。

2.3)“显示pool_nodes”表示节点0已关闭,“select * from pg_stat_replication”仅显示一个备用节点,即node2。他们是对的。

2.4)“插入”和“选择”按预期工作。

第3步:

3.1)我手动启动node0作为node1的备用。

3.2)“select * from pg_stat_replication”表明node0和node2都是备用的,它们按预期工作。

3.3)“show pool_nodes”显示node0仍然是“down”,这是预期的。

3.4)“pcp_attach_node -n 0”,它返回node0。 “show pool_nodes”显示node0现在处于“up”状态,这是预期的。

3.5)但是,“插入”将失败并显示消息“错误:无法在只读事务中执行INSERT”。

3.6)“select * from pg_stat_replication”显示0行,这意味着两个备用节点消失。

3.7)很明显,所有“insert”和“select”都转到node0,而不是node1。

PGPool以主从流模式运行。

那么,我在步骤3.4中错过了什么来恢复失败的节点?

postgresql pgpool
1个回答
0
投票

我遇到了和你一样的问题。但是,我的Pgpool版本是3.7.2。我发现这个链接解决了我的问题:

https://git.postgresql.org/gitweb/?p=pgpool2.git;a=commit;h=e8baa3f0ee1a24f833cfa6cc5d0104b5cefe7b04

我在主/从复制中有三个postgresql数据库节点。当节点0是主节点时,我的Pgpool工作正常。主节点故障转移到节点1并且节点0故障恢复为备用节点后,pgpool将我的写入查询发送到节点0,并获得只读事务错误。

我做另一次检查。我进行主/从复制,其中节点0是热备用,节点1是主要的。我启动pgpool并尝试创建/插入数据库。 Pgpool总是将我的写入查询发送到节点0.在我下载最新的源代码并自己构建Pgpool之后,问题就解决了。

© www.soinside.com 2019 - 2024. All rights reserved.