集群 PostgreSQL 集群

问题描述 投票:0回答:2

由于 PostgreSQL 人员的术语选择不当,这会让一些人感到困惑,但请耐心等待……

我们需要能够支持多个 PostgreSQL (PG) 集群,并将它们集群在多个服务器上,例如使用代表。例如,支持每个 PG 集群的服务器可用性和 PITR。在许多情况下,每台服务器单个 PG 集群的成本太高,因此我们在单独的 PG 集群上建立多租户(小型)客户,用于数据分离、恢复等,但也希望能够通过复制/故障来支持 HA结束了。

PG 集群最接近的类比是 SQL Server 实例 - 每个实例都可以托管多个数据库,拥有自己的端口等。与 SQL Server 一样,您可以在同一服务器上运行多个实例(PG 集群),并为它们设置复制每个。

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

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

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

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

谢谢...

postgresql repmgr
2个回答
1
投票

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

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

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


0
投票

Postgresql 中无法执行像 Oracle Rac 这样的集群。

© www.soinside.com 2019 - 2024. All rights reserved.