gpt4 book ai didi

postgresql - pcp_attach_node 之后 pgpool 丢失了 master

转载 作者:行者123 更新时间:2023-11-29 12:24:22 25 4
gpt4 key购买 nike

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

第 1 步:

1.1)node0为主,node1、node2为备

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

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

第 2 步:

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

2.2) PGPool运行故障转移脚本,节点1成为主节点/节点2成为备用节点。

2.3) "Show 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都是stand-by,按预期工作。

3.3) “show pool_nodes”显示 node0 仍处于“关闭”状态,这是预期的。

3.4) “pcp_attach_node -n 0”,带回节点 0。 “show pool_nodes”显示 node0 现在处于“启动”状态,这是预期的。

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

3.6) "select * from pg_stat_replication"显示0行,表示两个备节点消失了。

3.7) 显然,所有“插入”和“选择”都转到了 node0,而不是 node1。

PGPool以主从流模式运行。

那么,我在步骤 3.4 中遗漏了什么来恢复故障节点?

最佳答案

我遇到了和你一样的问题。但是,我的 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 后,问题就解决了。

关于postgresql - pcp_attach_node 之后 pgpool 丢失了 master,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48997190/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com