Primary and secondary nodes help keep your data safe and available. The primary node handles writes, and secondary nodes copy data to protect against failures.
Primary and secondary nodes in MongoDB
rs.initiate({
_id: "replicaSetName",
members: [
{ _id: 0, host: "primaryHost:port", priority: 2 },
{ _id: 1, host: "secondaryHost1:port", priority: 1 },
{ _id: 2, host: "secondaryHost2:port", priority: 1 }
]
})The rs.initiate() command starts a replica set with one primary and multiple secondary nodes.
Priority controls which node becomes primary; higher priority means higher chance.
rs.initiate({
_id: "myReplicaSet",
members: [
{ _id: 0, host: "localhost:27017", priority: 2 },
{ _id: 1, host: "localhost:27018", priority: 1 }
]
})rs.initiate({
_id: "emptySet",
members: []
})rs.initiate({
_id: "singleNodeSet",
members: [
{ _id: 0, host: "localhost:27017", priority: 1 }
]
})rs.initiate({
_id: "multiSecondarySet",
members: [
{ _id: 0, host: "primaryHost:27017", priority: 2 },
{ _id: 1, host: "secondary1:27018", priority: 1 },
{ _id: 2, host: "secondary2:27019", priority: 1 }
]
})This command starts a replica set named exampleSet with one primary node on port 27017 and two secondary nodes on ports 27018 and 27019. Then rs.status() shows which node is primary and which are secondary.
/* Connect to MongoDB shell and run this to create a replica set */ rs.initiate({ _id: "exampleSet", members: [ { _id: 0, host: "localhost:27017", priority: 2 }, { _id: 1, host: "localhost:27018", priority: 1 }, { _id: 2, host: "localhost:27019", priority: 1 } ] }) /* Check the status to see primary and secondary nodes */ rs.status()
Primary node handles all writes and replicates data to secondary nodes.
Secondary nodes replicate data from primary and can serve read requests if configured.
Failover happens automatically: if primary fails, a secondary becomes primary.
Primary node is the main server that accepts writes.
Secondary nodes copy data from primary to keep backups and help with reads.
Replica sets improve data safety and availability by having multiple nodes.
Practice
primary node in a MongoDB replica set?Solution
Step 1: Understand the primary node's function
The primary node is the main server that accepts all write operations in a replica set.Step 2: Role in replication
The primary replicates data changes to secondary nodes to keep data consistent.Final Answer:
It accepts write operations and replicates data to secondary nodes. -> Option CQuick Check:
Primary node = accepts writes and replicates [OK]
- Thinking primary only reads data
- Confusing secondary with primary roles
- Assuming primary is just a backup
Solution
Step 1: Recall MongoDB replica set commands
The commandrs.status()is used to check the status of the replica set.Step 2: Verify other options
Other options are not valid MongoDB shell commands for replica set status.Final Answer:
rs.status() -> Option DQuick Check:
Replica set status command = rs.status() [OK]
- Using incorrect or non-existent commands
- Confusing database commands with replica set commands
- Typing commands with wrong syntax
Solution
Step 1: Understand replica set failover
If the primary node fails, the replica set automatically elects a new primary from the secondaries.Step 2: Check other options
The replica set does not stop all operations; it does not restart primary automatically; multiple primaries cannot exist simultaneously.Final Answer:
One of the secondary nodes will be elected as the new primary. -> Option BQuick Check:
Failover elects new primary from secondaries [OK]
- Thinking all nodes become primary
- Assuming system stops all operations
- Believing primary restarts automatically
rs.stepDown() on the primary node but get an error saying "not primary". What is the likely cause?Solution
Step 1: Understand rs.stepDown() usage
This command only works on a primary node to force it to step down.Step 2: Analyze the error message
"not primary" means the node is already a secondary, so it cannot step down.Final Answer:
The node is already a secondary, not primary. -> Option AQuick Check:
rs.stepDown() error "not primary" = node is secondary [OK]
- Trying to step down a secondary node
- Assuming syntax error causes this message
- Ignoring the node's current role
Solution
Step 1: Understand priority and write concern
Setting all nodes with priority 1 allows any secondary to become primary if needed. Majority write concern ensures writes are acknowledged by most nodes.Step 2: Evaluate other options
Priority 0 disables election for that node; disabling write concern risks data loss; single node has no failover; priority 0 on all nodes prevents elections.Final Answer:
Set all nodes with priority 1 and enable majority write concern. -> Option AQuick Check:
Priority 1 + majority write concern = safe failover [OK]
- Disabling write concern risking data loss
- Setting priority 0 disables elections
- Using single node without replicas
Ready to prove it?
Pass the test and this pattern moves unknown
