mongodb中的集群配置,无法通过mongod.conf中配置,只能在mogo通过命令配置,下面介绍下在mogo中的定义的config.
基本语法:config={….} ,也就是说config是一个json的数组。请注意哪些配置是必须的、非必须、建议使用、不建议使用。
_id:副本集的名称,该值必需和mongod.conf配置文件中的 replication.replSetName 一致,或者在mongod启动命令中的–replSet保持一致。[必须的]
version:复制集的版本。[非必须]
configsvr:分片集群服务的复制集,需要设置为true,否则设置为false。默认为false,3.2版本默认为true,3.4版本才默认为false 。这里坑了我两天。
protocolVersion:协议版本,3.2后默认为1,[非必须,采用默认值即可]
writeConcernMajorityJournalDefault:3.4的新功能设置,等同于writeConcern中设置的{ w: “majority” } ,需要注意的是,如果protocolVersion=1,默认为true,protocolVersion=0,默认为false
members:成员。是一个json的数组
members[n]._id:_id是一个从0-255的整型数。在更新副本集节点配置时,将用到这个_id,也是节点的唯一标识。[必须]
members[n].host:可以是host或者IP:port,默认端口27017 [必须]
members[n].arbiterOnly:默认false,仲裁节点,也可以使用方法rs.addArb() 直接添加。[非必须]
members[n].buildIndexes:默认true,节点是否创建索引。这个建议设置为true,采用默认设置即可。如果该值设置为false,那需要注意同时该节点的值priority也需要设置为0,否则投票将无法创建索引的节点,升级为premary节点,客户端的情况将会出错。
members[n].hidden:设置为隐藏节点。客户端的情况不会到达隐藏节点,不管readPrefence如何设置。一般情况下,隐藏节点做为备份节点,延迟节点也属于隐藏节点。[非必须]
members[n].priority:选举premary的权重,默认值是1,值可以从1-1000,改值只是一个相对值。如果像让某一个节点无法成为主节点,该值设置为0
members[n].tags:
members[n].slaveDelay:设置延迟节点,改值的单位是秒。默认是0
members[n].votes:默认值1,单个节点的最大投票数。副本集的最大节点数是50,但最多只有7个投票节点,除这7个之外,其他的投票数应该为0.
settings :设置,也是一个json的数组。
settings.chainingAllowed:默认为true,表示副本集允许secondary节点从另一个secondary节点复制数据。设置为false,表示只能从主节点复制数据。数据一致性要求较高,请设置为false,设置为false无疑会增加主节点的性能开销,请慎重。
settings.heartbeatTimeoutSecs:节点间的心跳延迟时间。默认10s,超过10s后,将认为该节点失效。
settings.electionTimeoutMillis:默认10000(10s),一旦主节点宕机,多长时间选举出新的主节点。值太大故障转移的时间较长,值太小造成系统压力。
settings.heartbeatIntervalMillis:节点间的心跳时间,默认2s
配置实例:
config={_id:”wanda”,configsvr:false,members:[{_id:1,host:”192.168.80.121:27017″,priority:10},{_id:2,host:”192.168.80.122:27017″,priority:5},{_id:3,host:”192.168.80.123:27017″,priority:0}]}
rs.initiate(config)
rs.add({_id:2,host:”192.168.80.122:27017″,priority:5})
Pingback引用通告: mongodb中复制集的命令 | 精彩每一天