【问题标题】:MongoDB sharding storage usageMongoDB 分片存储使用情况
【发布时间】:2018-07-11 05:27:12
【问题描述】:

我正在阅读有关 MongoDB 中的分片的信息。在了解了它的工作原理之后,我有一个关于它使用的存储空间的非常基本的问题。

假设,我有一个包含 1 GB 存储空间的服务器。现在假设我的数据将超过 1 GB,这对我的目的来说是不够的。所以,我再添加一台服务器并分片 Mongo。

现在,假设我有 2 台服务器,每个服务器的存储空间为 1 GB,它们将包含在集群中。如果我执行分片,那么这两个服务器都将用于分发 Mongo 数据。因此,总的来说,我必须为 Mongo 提供 2 GB 的存储空间。但是,我发现the official sharding documentation 提到分片是副本集。如果是这样,那么添加 1 GB 的服务器是否意味着我只有 1 GB 的存储空间(像以前一样)用于实际的 MongoDB 数据,而剩余的 1 GB 只是复制数据?

如果我的理解是正确的,那么有没有办法不创建副本集?我们可以像逻辑卷一样使用来自两个服务器的 2 GB 存储空间吗?

否则,如果我的理解是错误的,那么正确的是什么?

【问题讨论】:

    标签: mongodb sharding


    【解决方案1】:

    MongoDB 的 Sharding 文档说 - “Sharding 将数据分布在集群中的各个分片上,允许每个分片包含一个全部集群数据的子集。随着数据集的增长,额外的分片增加了集群的存储容量”。这里:https://docs.mongodb.com/manual/sharding/(存储容量)

    由于它的子集都包含不同的数据集。因此,可以根据使用情况多次使用副本集(用于存储数据子集或将数据保存为备份并创建副本的分片)。

    分片发生在复制的上一级。

    当您同时使用分片和复制时,您的集群由许多副本集组成,一个副本集由许多 mongod 实例组成。

    但是,也可以创建一个独立的 mongod 实例集群,这些实例不被复制,或者只有一些分片实现为副本集,而一些分片实现为独立的 mongod 实例。

    每个分片都是一个副本集,而不是分片是副本集。

    我希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 2011-06-24
      • 2019-03-09
      • 2018-05-27
      • 2014-09-19
      • 1970-01-01
      • 2012-10-18
      • 1970-01-01
      • 2011-06-09
      相关资源
      最近更新 更多