MongoDB复制因子

时间:2016-12-19 18:41:21

标签: mongodb replication

我是Mongo的新手,已经使用过Cassandra一段时间了。我没有从Mongo的文档中找到任何明确的答案。我的下面的问题都是密切相关的。

1)如何在Mongo中指定复制因子?

在C *中,您可以为整个数据库和/或每个表定义复制因子(多少个副本)。 Mongo的新复制集概念类似于C *的想法。但是,我不知道如何为Mongo中的每个表/集合定义复制因子。在Mongo中定义哪个?

2)副本集和复制因素?

您似乎可以在Mongo群集中为您的数据库定义多个副本集。副本集最多可包含7个投票成员。 5个成员的副本集是否意味着数据被复制5次?或者副本集仅用于投票?

3)什么集合的副本集?

副本集配置文档没有提及有关数据库或集合的任何内容。有没有办法指定副本集的目标集合?

4)副本集定义?

如果我想创建一个15节点的Mongo集群并保留每个记录的3个副本,那么如何将节点分区为多个副本集?

感谢。

2 个答案:

答案 0 :(得分:1)

Mongo复制通过复制整个 实例 来实现。它不是在单个数据库或集合级别完成的。除仲裁者外,所有副本都包含数据副本。仲裁员不持有任何数据,只参加新主要选举。它们通常被部署为创建足够多数,如果实例发生故障,则可以选择新实例作为主实例。

这里很好地解释了https://docs.mongodb.com/manual/replication/

答案 1 :(得分:0)

复制是指确保同一数据在多个Mongo DB Server上可用的过程。有时为了提高数据可用性是必需的。

因为如果您的主要MongoDB服务器由于任何原因而关闭,将无法访问数据。但是,如果您有规律地将数据复制到另一台服务器,即使主服务器出现故障,您也可以从另一台服务器访问数据。

复制的另一个目的是可以实现负载平衡。如果有许多用户连接到系统,则不必让每个人都连接到一个系统,而是可以将用户连接到多台服务器,以使负载平均分配。

在MongoDB中,多个MongDB服务器被分组在称为副本集的集合中。副本集将具有一个主服务器,该服务器将接受来自客户端的所有写操作。此后添加到集合中的所有其他实例将称为辅助实例,主要可用于所有读取操作。