您可以使用
方法或命令访问副本集的配置。rs.conf()
replSetGetConfig
要修改副本集的配置,请使用
rs.reconfig()
方法,将配置文档传递给该方法。请参阅rs.reconfig()
以获取更多信息。
警告
避免重新配置包含不同MongoDB版本成员的副本集,因为验证规则可能在MongoDB版本之间有所不同。
以下文档提供了副本集配置文档的表示。您的副本集的配置可能仅包括这些设置的一部分:
_id
¶类型:字符串
副本集的名称。设置后,您将无法更改副本集的名称。
_id
必须与在命令行上
指定的replication.replSetName
或-replSet的值相同
mongod
。
看到
replSetName
或--replSet
有关设置副本集名称的信息。
version
¶类型:int
一个递增的数字,用于将副本集配置对象的修订与配置的先前迭代区分开。
protocolVersion
¶3.2版中的新功能。
类型:数字
默认值:1
从4.0开始,MongoDB仅支持,不再支持。protocolVersion: 1
protocolVersion: 0
也可以看看
writeConcernMajorityJournalDefault
¶3.2.6版中的新功能。
类型:布尔值
默认值:true
如果写关注关系未明确指定日志选项j,则确定写关注关系的行为。{ w: "majority" }
下表列出了writeConcernMajorityJournalDefault
值和相关的行为:{ w: "majority" }
值 | { w: "majority" } 行为 |
---|---|
真正 | MongoDB在大多数有投票权的成员已将其写入磁盘日志后,才确认该写入操作。 重要 副本集的所有有投票权的成员必须在 如果副本集的任何有投票权的成员使用内存存储引擎,则必须设置
如果副本集的任何有投票权的成员使用内存存储引擎且
从版本4.2(以及4.0.13和3.6.14)开始,如果副本集成员使用内存中的存储引擎
(投票或不投票),但副本集已
|
假 | 大多数投票成员将MongoDB应用到内存后,MongoDB会确认该写入操作。 警告 如果副本集的任何有投票权的成员使用内存存储引擎,则必须设置
从版本4.2(以及4.0.13和3.6.14)开始,如果副本集成员使用内存中的存储引擎
(投票或不投票),但副本集已
您不能在具有 |
members
¶members
¶类型:数组
成员配置文档的数组,副本集的每个成员一个。该members
数组是零索引数组。
每个特定于成员的配置文档都可以包含以下字段:
members[n].
_id
¶类型:整数
副本集中每个成员的整数标识符。值必须介于0到255之间(含0和255)。每个副本集成员必须具有唯一的_id
。设置后,您将无法更改_id
成员的。
注意
更新副本配置对象时,请使用数组索引访问members
数组中
的副本集成员。数组索引以开头。千万不能混淆与价值这个指标值
字段中的每个文件中的数组。0
members[n]._id
members
members[n].
host
¶类型:字符串
set成员的主机名和端口号(如果指定)。
对于副本集中的每个主机,主机名名称都必须是可解析的。
警告
members[n].host
localhost
除非集合的所有成员都在解析为的主机上,
否则无法保存解析为或本地接口的值localhost
。
members[n].
arbiterOnly
¶可选的。
类型:布尔值
默认值:false
标识仲裁者的布尔值。值true
表示该成员是仲裁者。
当使用rs.addArb()
方法添加的仲裁器,所述方法自动设置
members[n].arbiterOnly
到true
所添加的部件。
对于以下版本的MongoDB,
与带有仲裁器的副本集相比(在MongoDB 4.0+中不再支持)pv1
,w:1
回滚的可能性增加了pv0
:
请参见副本集协议版本。
members[n].
buildIndexes
¶可选的。
类型:布尔值
默认值:true
一个布尔值,指示是否在此成员上mongod
建立
索引。仅当将成员添加到副本集时才能设置此值。members[n].buildIndexes
将成员添加到集合后,您将无法更改
字段。要添加成员,请参见
rs.add()
和rs.reconfig()
。
false
对于mongod
接收来自客户端的查询的实例,请不要设置为。
如果
满足以下所有条件,则设置buildIndexes
为false
可能会有用:
mongodump
,并即使设置为false
,secondary 也会在_id
字段上建立索引,
以简化复制所需的操作。
警告
如果设置
members[n].buildIndexes
为
false
,则还必须设置
members[n].priority
为0
。如果
members[n].priority
不是
0
,则MongoDB在尝试添加members[n].buildIndexes
等于
的成员时将返回错误
false
。
为确保成员不接收任何查询,应将所有未构建索引的实例都隐藏起来。
其他辅助节点不能从成员members[n].buildIndexes
为false 的成员复制
。
可选的。
类型:布尔值
默认值:false
当该值为时true
,副本集将隐藏该实例,并且在db.isMaster()
或的输出中不包括该成员
isMaster
。这样可以防止读取操作(即查询)通过次要读取首选项到达此主机。
隐藏的成员可以确认由Write Concern发出的写操作。对于发出"majority"
写关注的写操作,该成员还必须是有投票权的成员(即votes
大于0
)。
也可以看看
members[n].
priority
¶在3.6版中进行了更改:从MongoDB 3.6开始,仲裁者具有优先权0
。如果仲裁程序的优先级为1
,则MongoDB 3.6会将仲裁程序重新配置为优先级为0
。
可选的。
类型:主要/次要介于0和1000之间的数字;仲裁者为0或1。
默认值:主要/次要为1.0;仲裁者为0。
表示会员成为主要会员的相对资格的数字。
指定较高的值以使成员更有资格成为
主要成员,而指定较低的值以使成员不太
合格。用甲构件members[n].priority
的0
是不能成为主。
更改副本集中的优先级平衡将触发一个或多个选择。如果在较高优先级的辅助节点上选举了较低优先级的辅助节点,则副本集成员将继续进行选举,直到最高优先级的可用成员成为主要成员。
具有priority
的成员0
可以确认由Write Concern发出的写操作。对于发出"majority"
写关注的写操作,该成员还必须是有投票权的成员(即
votes
大于0
)。
也可以看看
可选的。
类型:文件
默认值:无
甲tags
文档包含副本集构件用户定义标签字段和值对。
settings.getLastErrorModes
settings.getLastErrorDefaults
有关更多信息,请参见 配置副本集标记集。
members[n].
slaveDelay
¶可选的。
类型:整数
默认值:0
此副本集成员应“落后”主要人员“后”的秒数。
使用此选项可以创建延迟成员。延迟成员维护数据的副本,以反映过去某个时间的数据状态。
延迟的成员可能有助于确认由Write Concern发出的写操作。但是,它们不早于配置的延迟值返回写确认。对于发出"majority"
写关注的写操作
,该成员还必须是有投票权的成员(即votes
大于
0
)。
也可以看看
members[n].
votes
¶可选的。
类型:整数
默认值:1
服务器将在副本集选举中投票的票数。每个成员的投票数为1
或0
,而仲裁员始终拥有正确的1
投票权。
一个副本集最多可以有7个投票成员。如果你需要在一个副本集超过7名成员,设置
到了额外的非投票成员。50 members
members[n].votes
0
在版本3.2中更改:非投票成员必须priority
为0。
具有0
投票权的成员无法确认发出“ 写入关注点”的写入操作majority
。
settings
¶settings
¶可选的。
类型:文件
包含适用于整个副本集的配置选项的文档。
该settings
文档包含以下字段:
settings.
chainingAllowed
¶可选的。
类型:布尔值
默认值:true
当settings.chainingAllowed
是
true
时,副本集允许二次从其它次要部件成员复制。如果
settings.chainingAllowed
是
false
,则次要服务器只能从主要服务器复制。
也可以看看
settings.
getLastErrorDefaults
¶可选的。
类型:文件
指定副本集写关注点的文档。副本集仅在进行写操作时才使用此写关注,或者不
getLastError
指定其他写关注。
如果settings.getLastErrorDefaults
未设置,则副本集的默认写关注只需要主数据库的确认。
settings.
getLastErrorModes
¶可选的。
类型:文件
用于通过使用定义自定义写关注点的文档members[n].tags
。定制写关注点可以提供数据中心意识。
该<number>
指满足写入需要关注不同的标签值的数量。例如,以下内容
settings.getLastErrorModes
定义了一个名为“写入关注点” datacenter
,要求将写入传播到两个dc
标签值不同的成员。
要使用定制写关注点,请将写关注点名称传递给w Option,例如
有关更多信息和示例,请参见配置副本集标记集。
settings.
heartbeatTimeoutSecs
¶可选的。
类型:int
默认值:10
副本集成员等待彼此成功发出心跳的秒数。如果一个成员未及时响应,则其他成员会将违约成员标记为不可访问。
注意
因为pv1
,
settings.electionTimeoutMillis
对次要成员是否要求选举的影响比选举权影响大settings.heartbeatTimeoutSecs
。
settings.
electionTimeoutMillis
¶3.2版中的新功能。
可选的。
类型:int
默认值:10000(10秒)
检测副本集主数据库何时不可达的时间限制(以毫秒为单位):
该设置仅在使用时适用。protocolVersion: 1
注意
在版本4.0.2中更改:如果参数enableElectionHandoff
为true(默认值),则当主要节点从rs.stepDown()
(或replSetStepDown
不带的命令)降级时,降级的主要节点将提名合格的辅助节点立即召集选举。否则,次要人员可以等到选举开始。降级的主服务器不等待切换的效果。有关更多信息,请参见
。force:
true
settings.electionTimeoutMillis
enableElectionHandoff
settings.
catchUpTimeoutMillis
¶3.4版的新功能。
可选的。
类型:int
在3.6版中进行了更改:
默认值:-1,无限追赶时间。
新选举的主数据库与其他可能具有更近期写入操作的副本集成员同步(追赶)的时间限制(以毫秒为单位)。无限或高时间限制可能会减少选举后其他成员需要回滚的数据量,但可能会增加故障转移时间。
新当选的主要成员在与集合中的其他成员完全同步后,将尽早结束该过渡期。在追赶期间,新选择的主服务器不可用于来自客户端的写入。使用replSetAbortPrimaryCatchUp
中止追赶然后完成过渡到小学。
该设置仅在使用时适用。protocolVersion: 1
注意
要将版本3.6中启动的副本集降级为3.4,请catchUpTimeoutMillis
从更改-1
为正数。无法将此值更改为正数会导致运行版本3.4的节点既不重新启动也不加入副本集。
settings.
catchUpTakeoverDelayMillis
¶3.6版的新功能。
可选的。
类型:int
默认值:30000(30秒)
确定节点超前于当前 主节点之后,节点等待启动追赶接管的时间(以毫秒为单位) 。在追赶接管期间,当前主节点之前的节点会发起选举,以成为副本集的新主节点。
在发起接管的节点确定它在当前主节点之前,它会等待指定的毫秒数,然后验证以下内容:
一旦确定满足所有这些条件,发起接管的节点将立即运行以进行选举。
有关副本集选择的更多信息,请参见副本集选择。
注意
设置catchUpTakeoverDelayMillis
为-1
禁用追赶接管。设置catchUpTimeoutMillis
为
0
禁用主要追赶,因此也禁止追赶接管。
settings.
heartbeatIntervalMillis
¶3.2版中的新功能。
仅供内部使用。
心跳的频率(以毫秒为单位)。
settings.
replicaSetId
¶3.2版中的新功能。
类型:ObjectId
与副本集关联并在rs.initiate()
或
期间自动创建的ObjectId replSetInitate
。您无法更改
replicaSetId
。