postgresql 9.4 高可用性拓扑

postgresql 9.4 high availability topology

我目前在 Ubuntu 14.04 上有一个包含许多数据库的主 postgresql 9.4 服务器。

我尝试使用 Barman 来设置备份,但我想设置流式副本,以便当主副本出现故障时,我可以将备用副本提升为新的主副本。我查看了 repmgr,但这只会产生一个只读的热备用服务器。这是否意味着如果我想提升备用以接受写入事务,我应该使用多主机解决方案?

我设想的系统是

 M1 (master)  -------------via ???-------------- S1 (standby/another master)
   |                                                |
   |via Barman                                      | via Barman
   |                                                |
B1 (backup server#1)                            B2 (backup server#2)

理想情况下,在 M1 宕机后,我可以将 S1 提升为新的主节点,它可以接受 read/write 事务,而不仅仅是只读的。一旦我们带回 M1,M1 可以保持待机状态,但会与 S1 一起播放。

postgres 9.4 BDR(双向复制)是一个很好的在 M1 和 S1 之间流式传输的解决方案吗?或者有什么商业产品可以做到这一点?

我不是 DBA,非常感谢您的意见。

非常感谢!

听起来标准流式复制就是您所追求的。

在这种情况下,您有一个负责所有写入的主服务器,然后是一个或多个只读副本,您可以将读取拆分到这些副本以减少主服务器上的负载。

如果主数据库服务器出现任何问题,您可以将其中一个副本提升为主服务器。将副本提升为主数据库后,即可将其写入。

查看 http://www.slideshare.net/jkshah/py-pg-day2013harep 了解有关这些设置如何工作的更多信息(向前跳到幻灯片 21 了解 postgresql 内容)

你要找的像单master,多(可能是2)warm stand-by集群。如果原始服务器发生故障,可以将一台备用服务器提升为主服务器。并且按照9.4,支持流复制。

`M1 (master) ---> S1 (warm stand-by) ---> S2 ( cascading replication)`

但我建议同时使用基于文件和流的复制来进行备用。

Postgresql 9.4 以上都支持。检查 http://www.postgresql.org/docs/9.4/static/high-availability.html