Mongodb 3.4 - 将副本添加到副本集的正确方法是什么?

时间:2016-12-29 00:37:43

标签: mongodb

在文档中,我发现了两种向成员添加副本的方法:

rs.add()

rs.add('mongodb0.example.net:27017')

sh.addShard()

sh.addShard( "rs1/mongodb0.example.net:27017" )

所以,检查我是否理解:这个标准是真的吗?

  • rs.add()用于将成员的额外副本添加到其副本集中。可用于配置服务器和分片。
  • sh.addShard()是向群集添加分片的特定方法。但为方便起见,还可以使用副本添加到分片的副本集。

谢谢。

1 个答案:

答案 0 :(得分:1)

  
    

rs.add()用于将成员的额外副本添加到其副本集中。可用于配置服务器和分片。

  

-

  

rs.add()用于将成员的额外副本添加到其副本集

以上陈述是正确的。但更确切地说,我将其重新命名为“将额外成员添加到当前主副本集”。

  

可用于配置服务器

是的,如果您使用Replica Set Config Server - 在MongoDB 3.2中反对三个镜像配置服务器(SCCC),或者您使用的是MongoDB 3.4。

  

和分片

这不正确。 Shard是集群的逻辑成员,它本身可以是副本集或独立集合(建议仅用于测试/开发目的)。您无法使用rs shell hellper将分片添加到群集中。

  
    

sh.addShard()是将分片添加到群集的特定方法。但为方便起见,还可以使用副本添加到分片的副本集。

  

-

  

sh.addShard()是将分片添加到群集的特定方法。

正确

  

但为方便起见,也可以使用副本添加到分片的副本集。

不正确。 addShard,正如其名称所暗示的那样,用于将碎片添加到集群而不是成员(您称之为复制品)添加到集合中。如上所述,分片可以是独立的或副本集。在后一种情况下,addShard参数必须是副本集名称(rs1)后跟'/'。然后是副本集种子成员。全部放在一起:"rs1/mongodb0.example.net:27017"

您 - 至少 - 必须先初始化副本集,然后再将其作为分片添加到群集中。在将群集作为分片加入群集后,您始终可以添加(或删除)该副本集中的成员。