2017-02-24 71 views
1

例如,如果我有5个服务器(A,B,C,D,E)Postgres-XL可以同时分片,复制和自动平衡吗?

我们可以设置复制因子为3的分布数据吗? (例如,一个写入到ABC,其他记录到ABD,其他记录到ABE,等等),所以当节点C发生某些硬件故障时,仍然存在一些记录。

我们是否也可以添加新节点,然后在没有停机的情况下将存储的数据平衡到新节点?

回答

3

是的,它可以做到这一点,但不符合你的想法。你所描述的将是NoSQL设置。 Postgres-XL是一个MPP数据库。

当您创建表时,您将其定义为“DISTRIBUTED BY”选项,该选项可以是复制,循环,散列,模数等。您需要查看每个选项的详细信息。您还可以将表空间定义为在定义的节点上。

你的设置会是这样的

  • 节点1事务管理
  • 节点2事务管理器的代理
  • 节点3 Coordinator1 &数据节点1
  • 节点4 Coordinator2 &数据节点2
  • 节点5的数据节点3

注意:重要的是要指出,因为我刚发现Postgres-XL没有HA或故障转移支持。这意味着如果单个节点发生故障,数据库关闭并需要手动干预。如果您在单个节点上丢失完全丢失数据库的磁盘,则使用循环法,散列和模共享选项更糟糕。

您可以支持对您的每个节点进行镜像的节点,但这会使您需要的节点数增加一倍,并且仍然不会进行故障转移。您将不得不手动配置它以使用备用节点并重新启动它。

+0

如果您使用keepalived和镜像每个数据节点会怎么样? – Greg0ry

+0

是的,正如我所提到的,您可以镜像设置每个节点的镜像。这实际上使您需要的服务器数量和成本翻倍,并且管理令人头疼。 我不认为保持活动会起作用,因为至少从我读取的所有镜像节点出于性能原因处于只读配置状态。此外,这将是每个节点的内部集群设置的第二个负载均衡步骤,这可能会使事情减慢很多,并添加大量新的故障点。 – BrianC

+0

底线官方文档说,如果一个节点出现故障,您必须手动将数据库从配置中删除失败的节点,然后添加镜像节点,然后重新启动。 您可以试着绕​​过它,但它不会被支持,并且可能仍然会因无法预料的问题而失败。 如果您需要HA并进行故障切换,则无法使用此选项。 – BrianC