我们希望构build一个两个Postgresql 8.4服务器的系统,前面的pgpool 2将使所有的写入都进入两个系统。 如果其中一个节点发生故障,则会降级,并且pgpool将指示其余节点上的所有写入。
从那里,我们可以手动重新同步一切,并把它们全部备份起来。
我目前正在做一些这样的testing,并注意到一些有趣的事情。
我的脚本有一个简单的循环,在db中插入行。 当我closures一个服务器上的networking接口时,脚本暂停,pgpool等待来自服务器的回复,但是不会降级,直到其他人尝试连接。 一旦有人创build了一个新的连接,它将返回一个错误,并降级服务器。 然后,如果我再次运行该脚本,它将指示写入单个剩余的服务器。
这似乎是一个需要太多的降级服务器的活动。 我错过了什么吗? 这是正常的吗?
干杯
标记
我相信你描述的行为对于pgpool来说是正常的 – 当服务器无法连接到服务器时,会导致服务器退化,但是如果连接已经“build立”了,它不会像你所期望的那样快速地死掉(这很可能处理短暂的networking故障,避免降低环境的“打嗝”)。
出于好奇,你有没有考虑Postgres 9中的stream日志复制? 最新的实现接近实时,并允许您在从属服务器上运行查询。 我相信同步复制即将到来(或者可能已经实施)。
你需要一个脚本或手动进程来处理失败(重新启动一个“slave”服务器作为主服务器并移动一个虚拟的IP),但是这个实现和从pgpool(re服务器出现故障时的同步等)
这里最大的优点就是使用了内置于Postgres服务器核心的东西,并且在9.0 betatesting过程中得到了相当广泛的testing和logging。 如果你没有限制,这是不切实际的,这是我的事实推荐。