副本集指南(二)

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

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

二、副本集成员配置

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()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值