Postgres-XL 可以同时分片、复制和自动平衡吗?
Posted
技术标签:
【中文标题】Postgres-XL 可以同时分片、复制和自动平衡吗?【英文标题】:Can Postgres-XL shard, replicate and auto-balance at the same time? 【发布时间】:2017-02-24 04:52:49 【问题描述】:例如,如果我有 5 台服务器(A、B、C、D、E)
我们可以设置复制因子为 3 的数据分布吗? (例如一个写到ABC,其他记录到ABD,其他记录到ABE,等等),所以当节点C发生硬件故障时,仍然有一些记录存在。
我们是否也可以添加一个新节点,然后将存储的数据平衡到新节点而不停机?
【问题讨论】:
【参考方案1】:是的,它可以做到这一点,但不是你想的那样。您所描述的是 NoSQL 设置。 Postgres-XL 是一个 MPP 数据库。
当您创建一个表时,您定义它的“分发方式”选项,它可以是复制、循环、哈希、取模等。您需要查看每个选项的详细信息。您还可以将表空间定义在已定义的节点上。
您的设置将类似于
Node1 事务管理器 Node2 事务管理器代理 Node3 Coordinator1 & Data Node1 Node4 Coordinator2 & Data Node2 Node5 数据 Node3注意:重要的是要指出,正如我刚刚发现的那样,Postgres-XL 没有 HA 或故障转移支持。这意味着如果单个节点发生故障,则数据库将关闭并且需要手动干预。更糟糕的是,如果您使用循环、哈希、模共享选项,如果您丢失了单个节点上的磁盘,则您完全丢失了数据库。
您可以拥有镜像每个节点的备用节点,但这将使您需要的节点数量增加一倍,并且仍然不会进行故障转移。您必须手动配置它以使用备用节点并重新启动它。
【讨论】:
如果你使用keepalived并镜像每个数据节点会怎样? 是的,正如我提到的,您可以镜像设置每个节点的镜像。这实际上使您需要的服务器数量和成本以及管理难题翻了一番。我认为keepalive不会起作用,因为至少从我读到的所有镜像节点出于性能原因都处于只读配置中。这也是集群设置中每个节点的第二个负载平衡步骤,这可能会大大降低速度,并添加很多新的故障点。 官方文档的底线说,如果节点失败,您必须手动关闭数据库,从配置中删除失败的节点,添加镜像节点,然后重新启动。您可以尝试绕过它,但它不受支持,并且可能仍会因不可预见的问题而失败。如果您需要 HA 和故障转移,这不是您想要使用的选项。 感谢@BrianC,您对 Postgres-XL 的主题很活跃,您能帮忙解决这个问题吗? ***.com/questions/43620071/… 抱歉,当我们得知 Postgres-XL 不支持故障转移时,我们抛弃了它。以上是关于Postgres-XL 可以同时分片、复制和自动平衡吗?的主要内容,如果未能解决你的问题,请参考以下文章