使用Sharding和ReplicaSet的MongoDB,我感到很困惑

时间:2013-07-02 09:33:01

标签: mongodb replication sharding

我有几个问题,我无法自己回答。

到目前为止我所理解的是:

复制: 我可以复制数据,因此在故障转移时,我的数据可以被另一个实例访问。到目前为止清楚。

拆分: 我可以将数据拆分为分片,如果我的数据集变得太大,它可以在其他机器上添加更多数据。

在mongodb中,我需要3个配置服务器,至少一个主服务器(mongos,我需要3个以避免因故障转移而受到影响)以及至少一个包含数据的数据服务器(mongod,可以避免故障转移3)。

我的问题:

  • 我应该从数据服务器开始使用哪种硬件? (datadir的GB大小,开始时会有什么好处?)
  • 在额外实例上的数据实例上运行配置服务器是否合适?
  • 我在哪里开始玩mongos?我可以在3个实例中的一个(配置和/或数据服务器)上执行此操作,但它是否很好?
  • 我怎么知道dataserver需要足够早的新实例? (在它满之前?)
  • 我需要多少个复制品? (或取决于什么?)
  • 我有3个完全不同的服务器,一个动物园管理员在运行,我可以在它们上运行我的配置服务器,只要性能很好或者是不合适的吗?

1 个答案:

答案 0 :(得分:1)

  

我应该从数据服务器开始使用哪种硬件?

如果不知道你的工作集,这是不可能回答的。 MongoDB需要的RAM量是工作集的大小。

  

在额外实例上的数据实例上运行配置服务器是否合适?

我个人认为,出于故障转移原因,您不希望配置服务器因某些随机副本分片而崩溃。

  

我在哪里开始玩mongos?我可以在3个实例中的一个(配置和/或数据服务器)上完成它,但这样做好吗?

mongos只不过是一个查询路由器,通常将它们打到您的应用程序服务器上是一个好主意,这样您的应用程序就会与一个(或某些)本地mongos对话,然后这些mongos会路由到您的网络。有一点很简单,如果您通过它们发送大量聚合查询,这些可能会占用一些CPU /内存。

  

我怎么知道dataserver需要足够早的新实例?

这取决于您的服务器所在的位置。我的意思是,如果它在AWS上,您可以设置警报,当集群中的总可用磁盘空间达到临界点时,这些警报会自动触发新分片的上线和设置。但是,这完全取决于您的服务器所在的位置以及他们所在的位置,您需要自己更多地了解这一点。

  

我需要多少个复制酶?

每个碎片一个。基本上每个分片应该是副本集。

  

我在3个完全不同的服务器上运行一个zookeeper,我可以在它们上运行我的配置服务器,只要性能很好或者是不行的吗?

我没有足够使用Zookeeper来回答这个问题。