二、副本集成员配置
1、调整成员的优先级
成员的优先级设置可以影响primary选举的结果,使用这个设置可以保证一些成员更容易被选举为primary,或者永远不能成为primary。
你可以通过更新副本集配置中的成员数组来修改优先级。数组以0开始,不要和成员的_id混淆。
为了阻止一个成员成为primary,你可以设置它的优先级为0。隐藏成员、延迟成员、仲裁者的优先级,都是0。
调整优先级,会使当前的primary下台,导致一次选举。
step1 复制副本集的参数到一个变量中
cfg=rs.conf()
step2 修改每个成员的优先级数值。
cfg.members[0].priority=0.5
cfg.members[1].priority = 2
cfg.members[2].priority = 2
step3 应用新的副本集参数
rs.reconfig(cfg)
2、阻止一个成员变为primary
副本集中,默认时,每一个成员都可以被选举为primary。你可以使用优先级为0来避免。无法被选举为primary的成员无法触发选举。其他方面,这些成员和所有非primary成员一致。
step1 复制副本集的参数到一个变量中
cfg=rs.conf()
step2 修改每个成员的优先级数值。
cfg.members[3].priority=0
step3 应用新的副本集参数
rs.reconfig(cfg)
3、配置一个隐藏副本集成员
隐藏成员作为副本集的一部分,不能够成为primary,并且对其他应用端不可见。隐藏成员可以投票。
隐藏成员可以用于支持延迟成员,如果你仅仅只想阻止一个成员变为primary,可以配置其优先级为0。如果chainingAllowed设置允许secondary成员从其他secondary成员复制,MongoDB默认优先挑选非隐藏成员作为复制目标。MongoDB仅仅将隐藏成员作为最后的手段。如果你想让secondary成员从隐藏成员处复制,需要replSetSyncFrom指令来覆盖默认的复制目标。
cfg = rs.conf()
cfg.members[0].priority = 0
cfg.members[0].hidden = true
rs.reconfig(cfg)
4、配置一个延迟成员
延迟成员,能够延迟读取primary的oplog。
延迟成员一般是优先级为0,防止被选举为primary;一般被隐藏,防止成为其他primary的复制目标。
cfg = rs.conf()
cfg.members[0].priority = 0
cfg.members[0].hidden = true
cfg.members[0].slaveDelay = 3600
rs.reconfig(cfg)
5、配置一个无投票权的成员
可以禁止成员的投票权,这并不会影响其他成员对其投票选举为primary。通过此方法,可以达到选举的大多数效果。
cfg = rs.conf()
cfg.members[3].votes = 0
cfg.members[4].votes = 0
cfg.members[5].votes = 0
rs.reconfig(cfg)
6、将一个secondary成员转变为仲裁者
如果你有一个成员不再被需要了,你可以将其转变为仲裁者,来选举primary。
step1 关闭此secondary成员
step2 在primary上,使用mongo shell从副本集中移除该secondary成员
rs.remove("<hostname><:port>")
step3 检查副本集设置,是否已经移除成功
rs.conf()
step4 清空或转移目标secondary的数据
mv /data/db /data/db-old
step5 创建一个新目录,来启动该secondary的mongod实例
mkdir /data/db
mongod --port 27021 --dbpath /data/db --replSet rs
step6 在primary上,使用mongo shell添加该secondary为仲裁者
rs.addArb("<hostname><:port>")
step7 检查
rs.conf()

本文详细介绍了如何配置MongoDB副本集成员,包括调整成员优先级、阻止成员变为primary、配置隐藏和延迟成员、设置无投票权成员以及将secondary转换为仲裁者。每个步骤都包含详细的配置过程。
14

被折叠的 条评论
为什么被折叠?



