同步多主复制 postgresql pgpool 2

同步多主复制 postgresql pgpool 2

我们希望构建一个由两个 Postgresql 8.4 服务器组成的系统,并在前面使用 pgpool 2,这样所有写入操作都会转到两个系统。如果其中一个节点发生故障,该节点将降级,而 pgpool 会将所有写入操作定向到剩余节点。

从那里我们可以手动重新同步所有内容并将其全部恢复。

我目前正在对此进行一些测试,并注意到一些有趣的事情。

我的脚本有一个简单的循环,用于在数据库中插入行。当我关闭一台服务器上的网络接口时,脚本会暂停,pgpool 会等待关闭的服务器的回复,但不会将其降级,直到其他人尝试连接。一旦其他人创建新的连接,它就会返回错误,并降级服务器。然后,如果我再次运行脚本,它会将写入定向到剩下的单个服务器。

这似乎需要太多活动才能降低服务器的性能。我是不是漏掉了什么?这正常吗?

干杯

标记

答案1

我相信您所描述的行为对于 pgpool 来说是正常的 - 当它无法连接到服务器时,它会降低服务器的性能,但如果连接已经“建立”,它就不会像您预期的那样快速消失(这可能是为了处理瞬态网络故障,并避免因“故障”而降低环境性能)。


出于好奇,您是否考虑过 Postgres 9 中提供的流日志复制?最新的实现是近乎实时的,并允许您在从属服务器上运行查询。我相信同步复制即将推出(或可能已经实现)。
您需要一个脚本或手动流程来处理故障(将其中一个“从属”服务器重新启动为主服务器并移动虚拟 IP),但实现与您从 pgpool 中获得的实现并没有什么实质性的不同(当服务器发生故障时重新同步等)。

这里最大的优势是,您使用的是 Postgres 服务器核心内置的东西,它在 9.0 测试版过程中得到了相当广泛的测试和记录。如果您没有任何限制,那么这是我的事实上的推荐。

相关内容