0

我已经建立了一个具有以下架构的测试 Postgres-XL 集群:

  • gtm-vm00
  • coord1+datanode1 - vm01
  • coord2+datanode2 - vm02

我创建了一个新数据库,其中包含一个通过复制分发的表。这意味着我应该在每个数据节点中都有该表的精确副本。

在表上执行操作效果很好,我可以看到连接到所有协调节点时复制的更改。

但是,当我模拟其中一个数据节点出现故障时,虽然我仍然可以很好地读取表中的数据,但我无法添加或修改任何内容,并且收到以下错误:

ERROR:  Failed to get pooled connections

我正在考虑将 Postgres-XL 部署为大量应用程序的高可用性数据库后端,但我无法控制这些应用程序如何与数据库交互(如果这些应用程序在一个应用程序无法写入数据库时​​可能会成为一个大问题)数据节点已关闭)。

据我了解,Postgres-XL 应该以一种非常透明的方式实现复制表的高可用性,并且应该能够支持丢失一个或多个数据节点(只要至少一个仍然可用 - 同样,这仅适用于复制表) ,但情况似乎并非如此。

这是预期的行为吗?为了能够承受一个或多个数据节点宕机,可以做些什么?

4

1 回答 1

0

所以事实证明根本不透明。令我大吃一惊的是,Postgres-XL 没有建立高可用支持或恢复。这意味着如果您丢失一个节点,则数据库将失败。如果您使用循环或散列 DISTRIBUTED BY 选项,如果您丢失了节点中的磁盘,则您丢失了整个数据库。我简直不敢相信,但事实就是如此。

他们确实有一个“备用”服务器选项,它只是您拥有的每个节点的一个镜像节点,但即使这样也需要手动设置它来恢复并使您需要的节点数量加倍。对于数据保护,您将不得不使用 REPLICATION DISTRIBUTED BY 选项,该选项速度要慢得多,并且再次没有故障转移支持,因此您必须手动重新启动它并重新配置它以不使用故障节点。

https://sourceforge.net/p/postgres-xl/mailman/message/32776225/

https://sourceforge.net/p/postgres-xl/mailman/message/35456205/

于 2017-03-02T21:57:27.530 回答