我已经建立了一个具有以下架构的测试 Postgres-XL 集群:
- gtm-vm00
- coord1+datanode1 - vm01
- coord2+datanode2 - vm02
我创建了一个新数据库,其中包含一个通过复制分发的表。这意味着我应该在每个数据节点中都有该表的精确副本。
在表上执行操作效果很好,我可以看到连接到所有协调节点时复制的更改。
但是,当我模拟其中一个数据节点出现故障时,虽然我仍然可以很好地读取表中的数据,但我无法添加或修改任何内容,并且收到以下错误:
ERROR: Failed to get pooled connections
我正在考虑将 Postgres-XL 部署为大量应用程序的高可用性数据库后端,但我无法控制这些应用程序如何与数据库交互(如果这些应用程序在一个应用程序无法写入数据库时可能会成为一个大问题)数据节点已关闭)。
据我了解,Postgres-XL 应该以一种非常透明的方式实现复制表的高可用性,并且应该能够支持丢失一个或多个数据节点(只要至少一个仍然可用 - 同样,这仅适用于复制表) ,但情况似乎并非如此。
这是预期的行为吗?为了能够承受一个或多个数据节点宕机,可以做些什么?