- Replication >
- Replication Reference >
- Replica Set Configuration
Replica Set Configuration¶
You can access the configuration of a replica set using the
rs.conf()
method or the replSetGetConfig
command.
To modify the configuration for a replica set, use the
rs.reconfig()
method, passing a configuration document to the
method. See rs.reconfig()
for more information.
Warning
Avoid reconfiguring replica sets that contain members of different MongoDB versions as validation rules may differ across MongoDB versions.
Replica Set Configuration Document Example¶
The following document provides a representation of a replica set configuration document. The configuration of your replica set may include only a subset of these settings:
{
_id: <string>,
version: <int>,
protocolVersion: <number>,
writeConcernMajorityJournalDefault: <boolean>,
configsvr: <boolean>,
members: [
{
_id: <int>,
host: <string>,
arbiterOnly: <boolean>,
buildIndexes: <boolean>,
hidden: <boolean>,
priority: <number>,
tags: <document>,
slaveDelay: <int>,
votes: <number>
},
...
],
settings: {
chainingAllowed : <boolean>,
heartbeatIntervalMillis : <int>,
heartbeatTimeoutSecs: <int>,
electionTimeoutMillis : <int>,
catchUpTimeoutMillis : <int>,
getLastErrorModes : <document>,
getLastErrorDefaults : <document>,
replicaSetId: <ObjectId>
}
}
Replica Set Configuration Fields¶
-
_id
¶ Type: string
The name of the replica set. Once set, you cannot change the name of a replica set.
_id
must be identical to thereplication.replSetName
or the value of –replSet specified tomongod
on the command line.See
replSetName
or--replSet
for information on setting the replica set name.
-
version
¶ Type: int
An incrementing number used to distinguish revisions of the replica set configuration object from previous iterations of the configuration.
-
configsvr
¶ New in version 3.2.
Type: boolean
Default: false
Indicates whether the replica set is used for a sharded cluster’s config servers. Set to
true
if the replica set is for a sharded cluster’s config servers.See also
-
protocolVersion
¶ New in version 3.2.
Type: number
Default: 1 for new replica sets
Version of the replica set election protocol.
Starting in MongoDB 3.2, new replica sets use
protocolVersion: 1
by default. Previous versions of MongoDB use version 0 of the protocol and cannot run as members of a replica set configuration that specifiesprotocolVersion
1.See also
-
writeConcernMajorityJournalDefault
¶ New in version 3.4.
Type: boolean
Default: true if
protocolVersion
is 1 and false ifprotocolVersion
is 0Determines the behavior of
{ w: "majority" }
write concern if the write concern does not explicitly specify the journal option j.The following table lists the
writeConcernMajorityJournalDefault
values and the associated{ w: "majority" }
behavior:Value { w: "majority" }
Behaviortrue MongoDB acknowledges the write operation after a majority of the voting members have written to the on-disk journal.
Important
All voting members of the replica set must run with journaling when
writeConcernMajorityJournalDefault
istrue
.If any voting member of a replica set runs without journaling and
writeConcernMajorityJournalDefault
istrue
,"majority"
write operations may fail. These include operations that inherently use"majority"
write concern, such as thereplSetStepDown
command, or variousmongo
shell methods that by default use"majority"
write concern, such as user management methods and role management methods.false MongoDB acknowledges the write operation after a majority of the voting members have applied the operation in memory.
Warning
If any voting member of a replica set runs without journaling (i.e. either runs an in-memory storage engine or runs with journaling disabled), you must set
writeConcernMajorityJournalDefault
tofalse
.
members
¶
-
members
¶ Type: array
An array of member configuration documents, one for each member of the replica set. The
members
array is a zero-indexed array.Each member-specific configuration document can contain the following fields:
-
members[n].
_id
¶ Type: integer
An integer identifier of every member in the replica set. Values must be between 0 and 255 inclusive. Each replica set member must have a unique
_id
. Once set, you cannot change the_id
of a member.Note
When updating the replica configuration object, access the replica set members in the
members
array with the array index. The array index begins with0
. Do not confuse this index value with the value of themembers[n]._id
field in each document in themembers
array.
-
members[n].
host
¶ Type: string
The hostname and, if specified, the port number, of the set member.
The hostname name must be resolvable for every host in the replica set.
Warning
members[n].host
cannot hold a value that resolves tolocalhost
or the local interface unless all members of the set are on hosts that resolve tolocalhost
.
-
members[n].
arbiterOnly
¶ Optional.
Type: boolean
Default: false
A boolean that identifies an arbiter. A value of
true
indicates that the member is an arbiter.When using the
rs.addArb()
method to add an arbiter, the method automatically setsmembers[n].arbiterOnly
totrue
for the added member.For the following MongoDB versions,
pv1
increases the likelihood ofw:1
rollbacks compared topv0
for replica sets with arbiters:- MongoDB 3.4.1
- MongoDB 3.4.0
- MongoDB 3.2.11 or earlier
-
members[n].
buildIndexes
¶ Optional.
Type: boolean
Default: true
A boolean that indicates whether the
mongod
builds indexes on this member. You can only set this value when adding a member to a replica set. You cannot changemembers[n].buildIndexes
field after the member has been added to the set. To add a member, seers.add()
andrs.reconfig()
.Do not set to
false
formongod
instances that receive queries from clients.Setting
buildIndexes
tofalse
may be useful if all the following conditions are true:- you are only using this instance to perform backups using
mongodump
, and - this member will receive no queries, and
- index creation and maintenance overburdens the host system.
Even if set to
false
, secondaries will build indexes on the_id
field in order to facilitate operations required for replication.Warning
If you set
members[n].buildIndexes
tofalse
, you must also setmembers[n].priority
to0
. Ifmembers[n].priority
is not0
, MongoDB will return an error when attempting to add a member withmembers[n].buildIndexes
equal tofalse
.To ensure the member receives no queries, you should make all instances that do not build indexes hidden.
Other secondaries cannot replicate from a member where
members[n].buildIndexes
is false.- you are only using this instance to perform backups using
Optional.
Type: boolean
Default: false
When this value is
true
, the replica set hides this instance and does not include the member in the output ofdb.isMaster()
orisMaster
. This prevents read operations (i.e. queries) from ever reaching this host by way of secondary read preference.See also
-
members[n].
priority
¶ Optional.
Type: Number, between 0 and 1000.
Default: 1.0
A number that indicates the relative eligibility of a member to become a primary.
Specify higher values to make a member more eligible to become primary, and lower values to make the member less eligible. A member with a
members[n].priority
of0
is ineligible to become primary.Members with
priority
greater than 0 cannot have 0votes
.Changing the balance of priority in a replica set will trigger one or more elections. If a lower priority secondary is elected over a higher priority secondary, replica set members will continue to call elections until the highest priority available member becomes primary.
See also
Optional.
Type: document
Default: none
A tag set document containing mappings of arbitrary keys and values. These documents describe replica set members in order to customize write concern and read preference and thereby allow configurable data center awareness.
This field is only present if there are tags assigned to the member. See Configure Replica Set Tag Sets for more information.
Use
replicaset.members[n].tags
to configure write concerns in conjunction withsettings.getLastErrorModes
andsettings.getLastErrorDefaults
.Important
In tag sets, all tag values must be strings.
For more information on configuring tag sets for read preference and write concern, see Configure Replica Set Tag Sets.
-
members[n].
slaveDelay
¶ Optional.
Type: integer
Default: 0
The number of seconds “behind” the primary that this replica set member should “lag”.
Use this option to create delayed members. Delayed members maintain a copy of the data that reflects the state of the data at some time in the past.
See also
-
members[n].
votes
¶ Optional.
Type: integer
Default: 1
The number of votes a server will cast in a replica set election. The number of votes each member has is either
1
or0
, and arbiters always have exactly1
vote.Members with
priority
greater than 0 cannot have 0votes
.A replica set can have up to
50 members
but only 7 voting members. If you need more than 7 members in one replica set, setmembers[n].votes
to0
for the additional non-voting members.Changed in version 3.2: Non-voting members must have
priority
of 0.Changed in version 3.0.0: Members cannot have
members[n].votes
greater than1
. For details, see Replica Set Configuration Validation.
-
settings
¶
-
settings
¶ Optional.
Type: document
A document that contains configuration options that apply to the whole replica set.
The
settings
document contain the following fields:-
settings.
chainingAllowed
¶ Optional.
Type: boolean
Default: true
When
settings.chainingAllowed
istrue
, the replica set allows secondary members to replicate from other secondary members. Whensettings.chainingAllowed
isfalse
, secondaries can replicate only from the primary.See also
-
settings.
getLastErrorDefaults
¶ Optional.
Type: document
A document that specifies the write concern for the replica set. The replica set will use this write concern only when write operations or
getLastError
specify no other write concern.If
settings.getLastErrorDefaults
is not set, the default write concern for the replica set only requires confirmation from the primary.
-
settings.
getLastErrorModes
¶ Optional.
Type: document
A document used to define an extended write concern through the use of
members[n].tags
. The extended write concern can provide data-center awareness.For example, the following document defines an extended write concern named
eastCoast
and associates with a write to a member that has theeast
tag.{ getLastErrorModes: { eastCoast: { "east": 1 } } }
Write operations to the replica set can use the extended write concern, e.g.
{ w: "eastCoast" }
.See Configure Replica Set Tag Sets for more information and example.
-
settings.
heartbeatTimeoutSecs
¶ Optional.
Type: int
Default: 10
Number of seconds that the replica set members wait for a successful heartbeat from each other. If a member does not respond in time, other members mark the delinquent member as inaccessible.
The setting only applies when using
protocolVersion: 0
. When usingprotocolVersion: 1
the relevant setting issettings.electionTimeoutMillis
.
-
settings.
electionTimeoutMillis
¶ New in version 3.2.
Optional.
Type: int
Default: 10000 (10 seconds)
The time limit in milliseconds for detecting when a replica set’s primary is unreachable:
- Higher values result in slower failovers but decreased sensitivity to primary node or network slowness or spottiness.
- Lower values result in faster failover, but increased sensitivity to primary node or network slowness or spottiness.
The setting only applies when using
protocolVersion: 1
.
-
settings.
catchUpTimeoutMillis
¶ New in version 3.4.
Optional.
Type: int
Default: 2000 (2 seconds)
Time limit in milliseconds for a newly elected primary to sync (catch up) with the other replica set members that may have more recent writes. Specifying a higher time limit may reduce the amount of data that the other members would need to roll back after an election but may increase the failover time.
The newly elected primary ends the catchup period early once it is fully caught up with other members of the set. During the catchup period, the newly elected primary is unavailable for writes from clients.
The setting only applies when using
protocolVersion: 1
.
-
settings.
heartbeatIntervalMillis
¶ New in version 3.2.
Internal use only.
The frequency in milliseconds of the heartbeats.
-
settings.
replicaSetId
¶ New in version 3.2.
Type: ObjectId
The ObjectId associated with the replica set and automatically created during
rs.initiate()
orreplSetInitate
. You cannot change thereplicaSetId
.
-