【问题标题】:mongodb replication + sharding consistencymongodb复制+分片一致性
【发布时间】:2014-01-05 13:31:17
【问题描述】:

我有一个疑问(当然是一对)。我想我掌握了答案,但我正在寻找确认

假设我将实现一个 mongodb 的分片集群,是否有必要在分片旁边放置一个副本集?

我知道如果我只使用replicaSet,并且我决定将读取操作分布在辅助节点上,它会导致最终一致性,对吧? 另一方面,如果我不在辅助节点上启用读取,我将获得的“唯一”优势是保护数据库以防节点崩溃

但是分片副本中的一致性呢?它仍然是最终一致的还是完全一致的?

【问题讨论】:

    标签: mongodb


    【解决方案1】:

    是否有必要在分片旁边放置一个副本集

    你不必这样做,但如果你关心可用性,你会的。

    我决定将读取操作分发到辅助节点上,这会导致最终一致性,对吧?

    是的,因为辅助节点收集的 OP 与主节点一样多,并且大多数驱动程序只会从一个活动的辅助节点中读取,因此从辅助节点读取是非常没用的。

    我将获得的“唯一”优势是在节点崩溃的情况下保护数据库

    “唯一”?这就是副本集的全部意义所在,以产生自动故障转移。这是存在的根本原因,而且是一个很大的原因。

    它仍然是最终一致的还是完全一致的?

    这取决于您在哪里进行读取,但如果您在分片设置中从辅助节点读取,您不仅会获得最终的一致性,而且由于块移动,您还可能会获得重复的文档。

    如果您从主数据库读取,那么您将在分片副本集设置中获得强一致性。

    【讨论】:

    • 感谢您的回答!我把“only”放在引号内,正是因为我不想贬低它带来的优势。抱歉,我应该使用另一个词,它是我的英语 XD 我试图理解为什么在你说的最后一句话中:从初选阅读。我的意思是,为什么是复数?分片集群中可以有多个主节点吗?
    • @lese 确保分片副本设置是每个分片实际上都是主分片的地方
    • @lese sorry 写得这么快,每个分片都是一个副本集,有自己的主节点和次节点
    • @sammaye:太好了!这正是我所缺少的理解 :) 此外,试图通过启用辅助读取来提高可用性总是涉及一致性问题!该死的诶
    猜你喜欢
    • 2019-03-26
    • 1970-01-01
    • 1970-01-01
    • 2017-08-29
    • 1970-01-01
    • 2021-08-21
    • 2013-11-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多