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 可以同时分片、复制和自动平衡吗?的主要内容,如果未能解决你的问题,请参考以下文章

你能使用 Postgres-XL 的 Round Robbin 或 Hash 数据分片选项并有冗余吗

在 postgresql 中水平分片的好方法是啥

Redis复制和redis分片(集群)的区别

Postgres-XL 数据库

Redis 复制 与 集群

12.2新特性Oracle Sharding分片级别的高可用实现