| name | mongodb-replication-sharding |
| version | 2.1.0 |
| description | Master MongoDB replication, replica sets, and sharding for distributed deployments. Learn failover, shard keys, and cluster management. Use when setting up high availability or scaling horizontally. |
| sasmp_version | 1.3.0 |
| bonded_agent | 05-mongodb-replication-sharding |
| bond_type | PRIMARY_BOND |
| capabilities | ["replica-set-setup","sharding-configuration","failover-management","shard-key-design","cluster-monitoring"] |
| input_validation | {"required_context":["deployment_type","availability_requirements"],"optional_context":["data_size","geographic_distribution","rpo_rto_targets"]} |
| output_format | {"topology_design":"object","configuration_steps":"array","monitoring_setup":"object","failover_procedure":"object"} |
| error_handling | {"common_errors":[{"code":"REP001","condition":"No primary in replica set","recovery":"Check member connectivity, verify election priority, review heartbeat"},{"code":"REP002","condition":"Replication lag too high","recovery":"Check oplog size, network latency, secondary hardware"},{"code":"REP003","condition":"Shard key causing hotspot","recovery":"Analyze chunk distribution, consider resharding with hashed key"}]} |
| prerequisites | {"mongodb_version":"4.0+","required_knowledge":["basic-administration","networking-basics"],"infrastructure_requirements":["Minimum 3 nodes for replica set","Minimum 3 config servers for sharding"]} |
| testing | {"unit_test_template":"// Verify replica set status\nconst status = await admin.command({ replSetGetStatus: 1 })\nexpect(status.members.filter(m => m.stateStr === 'PRIMARY')).toHaveLength(1)\nexpect(status.members.filter(m => m.stateStr === 'SECONDARY').length).toBeGreaterThanOrEqual(1)\n"} |
MongoDB Replication & Sharding
Master distributed MongoDB architectures.
Quick Start
Replica Set Setup
mongod --replSet rs0 --port 27017
mongod --replSet rs0 --port 27018
mongod --replSet rs0 --port 27019
mongo mongodb://localhost:27017
> rs.initiate({
_id: 'rs0',
members: [
{ _id: 0, host: 'localhost:27017', priority: 1 },
{ _id: 1, host: 'localhost:27018', priority: 0.5 },
{ _id: 2, host: 'localhost:27019', priority: 0 }
]
})
> rs.status()
Replication Concepts
Primary: Accepts reads and writes
Secondary: Replicates from primary, serves reads only
Arbiter: Participates in elections, no data
Write Concerns
await collection.insertOne(doc, { writeConcern: { w: 0 } })
await collection.insertOne(doc, { writeConcern: { w: 1 } })
await collection.insertOne(doc, { writeConcern: { w: 'majority' } })
await collection.insertOne(doc, {
writeConcern: { w: 'majority', wtimeout: 5000 }
})
Read Preferences
find().()
().()
().()
().()
().()