2

由于 PostgreSQL 人员选择不当的术语,这会让一些人感到困惑,但请多多包涵……

我们需要能够支持多个 PostgreSQL (PG) 集群,并使用例如 repmgr 将它们集群在多个服务器上。例如,支持每个 PG 集群的服务器可用性和 PITR。在很多情况下,每台服务器一个 PG 集群太贵了,所以我们多租户(小)客户在不同的 PG 集群上,用于数据分离、恢复等,但也希望能够通过复制/失败来支持 HA-超过。

PG 集群最接近的类比是 SQL Server 实例——每个实例可以托管多个 DB,有自己的端口等。像 SQL Server 一样,您可以在同一台服务器上运行多个实例(PG 集群),并为每个实例设置复制.

基本的 repmgr 设置没有问题——这在单个 PG 集群模型中似乎相当清楚。但是,对于使用 repmgr 的多个 PG 集群,是否有任何推荐/支持的方法?我可以想象假装 repmgr 认为每个 PG 集群实际上是一个单独的 repmgr 集群(具有单独的 repmgr.conf、连接信息/端口)。但是,我还不确定这会奏效。

我通常希望在同一台服务器上对所有 PG 集群进行故障转移——而不是一次一个。

我认识到这可能不是在所有情况下都是最好的主意,但主要是在探索什么是可能的。我有一些替代方案,但这最接近我们当前的单节点模型。

澄清一下,我需要在许多服务器集群中支持成千上万的客户。理想情况下,每个集群都使用相同的repmgr DB(例如在主PG集群中),并且基本上独立于其他服务器集群。

谢谢...

4

1 回答 1

1

回答我自己的问题,但我希望最终有人发布更好的答案,否则我非常喜欢 repmgr。最后,repmgr 似乎不适合多个 PG 集群(实例),因为 repmgr 集群连接字符串和 PG 集群(端口)之间存在隐含关系。因此,您基本上必须为每个集群 PG 集群/实例创建一个单独的 repmgr 环境 (DB),从而失去了 repmgr 带来的大量操作简单性。

我将研究使用 Corosync/Pacemaker/etc. 的更通用的解决方案,因为至少在这种情况下,虚拟集群 IP 处理是内置到解决方案中的,并且不需要额外的软件/资源来实现。

我确定我可能过度简化了事情,但似乎 repmgr 非常接近解决大部分问题,如果它允许 repmgr DB 完全独立于 PG 集群并允许每个 repmgr 集群指定其自己的连接信息,而不是(仅)repmgr DB 本身的连接信息。

于 2017-06-12T13:41:51.183 回答