postgresql 9.4高可用性拓扑

时间:2015-02-24 18:36:22

标签: postgresql replication database-replication postgresql-9.4

我目前在Ubuntu 14.04上有一个包含许多数据库的master 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提升为新的主设备,它可以接受读/写事务而不仅仅是只读。一旦我们带回M1,M1可以保持待机状态,但会以S1流式传输。

postgres 9.4 BDR(双向复制)是M1和S1之间流的好解决方案吗?或者是否有任何商业产品可以做到这一点?

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

非常感谢你!

2 个答案:

答案 0 :(得分:1)

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

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

如果master数据库服务器发生任何事情,您可以将其中一个副本提升为master。将副本提升为主数据库后,即可将其写入。

查看http://www.slideshare.net/jkshah/py-pg-day2013harep以获取有关这些设置如何工作的更多信息(跳过第21页的postgresql内容)

答案 1 :(得分:1)

您正在寻找的是单个主人,多个(可能是2个)热备用群集。如果原始服务器发生故障,可以将一个备用服务器提升为主服务器。根据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