Replication
Replication, in the context of MongoDB, is a process that ensures data availability by storing data across different servers. Replication provides redundancy and increases data availability with multiple copies of data on different database servers. When we talk about replication, the main highlight is its ability to protect a database from the loss of a single server.
Understanding Replication
MongoDB achieves replication by implementing a replica set, which is a group of MongoDB servers. The set holds the same data set, providing redundancy and increasing data availability. A replica set consists of several data-bearing nodes and optionally one arbiter node. Of the data-bearing nodes, one and only one member is deemed the primary node, while the other nodes are secondary nodes.
The primary node receives all write operations, while the secondary nodes replicate the primary's oplog and apply the operations to their data sets. If a primary node is unavailable, an election determines a new primary.
Why Use Replication?
High Availability: Replication provides redundancy and increases data availability. With multiple copies of data on different database servers, replication protects a database against hardware failure and loss of a single server.
Disaster Recovery: You can recover database server outages and hardware failures using the replicated data. In case of a disaster, you can use the secondary servers for backup and restore.
No Downtime for Maintenance: With Replication, you can perform maintenance on the system with minimal downtime. You can bring down a server, perform maintenance, and bring it back to the replica set without affecting the availability of the system.
Read Scalability: You can use secondary replicas for read operations to increase the read capacity of the system.
How to Set Up Replication in MongoDB
Setting up replication in MongoDB involves creating a replica set. To configure a replica set, perform the following steps:
- Start each replica set member with the
--replSet
option. For example, start mongod from the command line as follows:
mongod --port 27017 --dbpath /srv/mongodb/rs0-0 --replSet rs0 --bind_ip localhost,<hostname(s)|ip address(es)>
- Connect a mongo shell to the mongod instance that you want to be primary:
mongo --port 27017
- Initiate the replica set:
rs.initiate()
- Add members to the replica set:
rs.add("<hostname>:<port>")
Monitoring Replication
To monitor the status of the replica set members, use the rs.status()
command. This command returns a document that describes the current replica set configuration and the status of the replica set from the perspective of the server that processed the command.
rs.status()
Conclusion
Replication is an important aspect of MongoDB that ensures high availability, data redundancy, and scalability. It is a fundamental part of performance tuning in MongoDB and serves as a safety net against data loss. By understanding and implementing replication, you can ensure that your MongoDB database is robust and resilient.