目录
一个MongoDB副本集群中,包含主成员、辅助成员和仲裁成员,成员的相关配置不相同,则其承担的角色也不同,本篇就副本集中成员的相关配置做介绍。
1 调整副本集成员的优先级
设置副本集成员的优先级,其实就是设置priority选项,该选项的默认值是1,其值大小可以是0到1000之间的浮点数,该值越高,则优先级越高,越可能发起选举,并在投票选举中获胜。若要阻止成员竞选为主成员,请将其优先级设为0,对于隐藏成员和延迟成员,其优先级为0。下面将演示如何设置成员的优先级(将192.168.56.105的优先级设置为2):
1)查看副本集的配置
rep1:SECONDARY> rs.conf()
{
"_id" : "rep1",
"version" : 9,
"protocolVersion" : NumberLong(1),
"writeConcernMajorityJournalDefault" : true,
"members" : [
{
"_id" : 0,
"host" : "192.168.56.102:27017",
"arbiterOnly" : false,
"buildIndexes" : true,
"hidden" : false,
"priority" : 1,
"tags" : {
},
"slaveDelay" : NumberLong(0),
"votes" : 1
},
{
"_id" : 1,
"host" : "192.168.56.103:27017",
"arbiterOnly" : false,
"buildIndexes" : true,
"hidden" : false,
"priority" : 1,
"tags" : {
},
"slaveDelay" : NumberLong(0),
"votes" : 1
},
{
"_id" : 2,
"host" : "192.168.56.104:27017",
"arbiterOnly" : true,
"buildIndexes" : true,
"hidden" : false,
"priority" : 0,
"tags" : {
},
"slaveDelay" : NumberLong(0),
"votes" : 1
},
{
"_id" : 3,
"host" : "192.168.56.105:27017",
"arbiterOnly" : false,
"buildIndexes" : true,
"hidden" : false,
"priority" : 1,
"tags" : {
},
"slaveDelay" : NumberLong(0),
"votes" : 1
}
],
"settings" : {
"chainingAllowed" : true,
"heartbeatIntervalMillis" : 2000,
"heartbeatTimeoutSecs" : 10,
"electionTimeoutMillis" : 10000,
"catchUpTimeoutMillis" : -1,
"catchUpTakeoverDelayMillis" : 30000,
"getLastErrorModes" : {
},
"getLastErrorDefaults" : {
"w" : 1,
"wtimeout" : 0
},
"replicaSetId" : ObjectId("5d949d0840e7ee7b725ee3c6")
}
}
2)设置192.168.56.105的优先级设置为2
rep1:PRIMARY> var cfg=rs.conf()
rep1:PRIMARY> cfg.members[3].priority=2
2
rep1:PRIMARY> rs.reconfig(cfg)
{
"ok" : 1,
"$clusterTime" : {
"clusterTime" : Timestamp(1570199944, 1),
"signature" : {
"hash" : BinData(0,"O3myCF0IpfaCTOnESLt3ve6g0wg="),
"keyId" : NumberLong("6743187251305381890")
}
},
"operationTime" : Timestamp(1570199944, 1)
}
2 阻止辅助成员变为主成员
副本集中,默认情况下,所有的辅助成员都可以通过选举变为主成员。可以通过设置priority选项提高辅助成员变为主成员的可能性