集群PostgreSQL集群

时间:2017-06-07 22:12:46

标签: postgresql repmgr

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

我们需要能够支持多个PostgreSQL(PG)群集,并使用例如多个服务器将它们集中在多个服务器上。 repmgr。例如,为每个PG群集支持服务器可用性和PITR。在许多情况下,每台服务器的单个PG群集过于昂贵,因此我们在单独的PG群集上的多租户(小)客户,用于数据分离,恢复等,但也希望能够通过复制/失败支持HA-结束了。

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

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

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

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

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

...谢谢

1 个答案:

答案 0 :(得分:1)

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

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

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