我目前有一个主 postgresql 9.4 服务器,其中包含 Ubuntu 14.04 上的许多数据库。
我尝试使用 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,非常感谢您的意见。
太感谢了!
我使用http://en.wikipedia.org/wiki/Corosync_%28project%29和 peacemaker。也许http://clusterlabs.org/wiki/PgSQL_Replicated_Cluster可以帮助你。
看起来你问了 2 个问题:
问题一
内置的 PostgreSQL 功能足以获得基于WAL 的只读备用(又名辅助,又名从属)服务器。但是,它们不足以实现多主机操作。
这个 R/O 从站可以在任何时候通过使用
pg_ctl
.(注意:
pg_ctl
工具可能隐藏在默认的 debian/ubuntu 安装程序中。查看/usr/lib/postgresql/X.Y/bin
它)当它被提升时,复制停止并且从属与主断开。请参阅pg_ctl 文档和故障转移文档
promote
中有关命令的相关片段。问题2
我不知道BDR(也许这是一个很好的解决方案),但你真的需要两台服务器都处于 R/W 模式吗?如果没有,我强烈建议使用内置的流复制(使用流或日志传送)。
要将流量从主服务器重定向到备用服务器,您需要一些外部工具来执行故障转移过程——使用基于 dns 或基于 IP 或其他故障转移方法。PostgreSQL 本身不知道如何重定向流量或在数据库范围之外做任何事情。流行的工具是 pgpool(在第 7 层)或 Linux HA 或 corosync 和朋友(在较低层)。