1

我将构建一个要减少单点故障的系统,并且我需要一个数据库。是否有任何(免费)关系数据库系统可以很好地处理多主设置(即易于添加和删除节点的地方),还是使用 NoSQL 数据库更好?

据我了解,键值存储会更好地处理这个问题。对于多主(集群)设置,您推荐什么数据库系统?

4

3 回答 3

3

Mysql 的 NDB Cluster 将执行此操作。但它远非易于设置并且有很多陷阱。

而且,它的性能通常相当糟糕,它会将数据保存在内存中(是的,我知道它们听起来很矛盾)。

本质上,更新需要在整个集群(或至少在保存这些表的存储节点组中)获取分布式锁

这并不容易管理,但您可以进行某种程度的热添加。

除非您需要非常快速的故障转移和一致性,否则我建议您不要这样做。

我建议忽略多主机,并改用 HA MySQL(例如 InnoDB),它易于设置,并且在典型的低于 30 秒的故障转移时间下运行良好。这是一个主从系统,其中从站甚至无法进行读取(但您可以添加具有复制功能的读取从站,前提是您不需要它们完全是最新的)

于 2010-04-12T11:17:51.530 回答
1

键值存储不一定是容错的。它们主要是性能工具。只有当数据存储在多台服务器上时,才会有任何形式的容错。如果只是为了安全,减少单点故障,最简单的解决方案可能是设置一个镜像解决方案,其中您有一个仅跟踪主数据库的镜像。当 master 以某种方式失败时,您会快速切换(希望是自动切换)。

由于在正常操作期间不需要一致性管理,因此其复杂性要低得多。镜像是只读的,只跟踪主数据库。当master失效时,镜像切换到master,链接断开。主控恢复后,它们之间的状态不一致,您必须确保从现在充当主控的镜像更新原始主控。大多数数据库系统都可以处理这种情况,如果您没有疯狂的正常运行时间要求或非常重的负载,那么它是最实用的解决方案。

于 2010-04-12T11:07:14.207 回答
0

我认为甲骨文已经掌握了这个概念。但是,如果你是一个没有瑞士银行账户的凡人,那么也许你应该研究一下MySQL 的 NDB Cluster

于 2010-04-12T10:37:55.263 回答