Bobcares

Mongodb Replication and Sharding

by | Apr 27, 2022

MongoDB replication and sharding is one of the popular choice for web applications and websites these days. MongoDB is simple to set up and use from a programming standpoint.

As part of our Server Management Service, Bobcares provides solutions for every query.

Let’s look deeper into the specifics of MongoDB replication and sharding.

MongoDB Replication and Sharding

MongoDB is a next-generation database that allows us to do things that were previously impossible.
To clarify, It is a prominent member of the NoSQL movement and a leading non-relational database management system.

MongoDB stores documents using key-value storage rather than tables and fixed schemas like a relational database management system (RDBMS).
So, in large, production environments, it also supports a variety of horizontal scaling options.

MongoDB is a NoSQL document database system that scales horizontally and uses a key-value system to store data.

MongoDB Sharding

Sharding is a technique used by MongoDB to achieve scale. It is the process of writing data to multiple servers in order to distribute the read and write load as well as the data storage requirements.

It is the process of storing data records across multiple machines. Most importantly, as the size of the data grows, a single machine may not be able to store it all or provide a consistent read and write experience.

Sharding will solve the problem of horizontal scaling. So, we use sharding to increase the number of machines available to support data growth and read and write operations.

MongoDB Replication

Scaling NoSQL databases to meet increased demand on our application is relatively simple compared to relational database servers — we simply add a new server, make a few configuration changes, and it connects to our existing servers, enlarging the cluster.

It will replicate and synchronize all the existing database and collections  with the other member nodes automatically. Therefore, when the entire data volume of our database(s) can fit on a single server, a replication cluster works well. As a result, we can save a full copy of the database on each server in our replication cluster.

Replica Sets are an excellent way to replicate MongoDB data across multiple servers and have the database failover automatically in the event of a server failure. So, clients can directly connect to secondary instances to scale read workloads. However, it’s important to note that master/slave MongoDB replication is not the same as a Replica Set, and it doesn’t have automatic failover.

MongoDB Clusters:

There are three parts to the MongoDB Cluster.

  • Config Server (mongod)

    The metadata that links requested data to the shard that contains it is stored on configuration servers.In other words, it organizes the data so that we can retrieve it consistently and reliably. For testing purposes, we only use one configuration server.

  • Query Routers (mongos)

    These machines communicate with the configuration servers to determine where it saves the requested data. Then, each query router will run the “mongos” command..

  • Shard Servers (mongod)

    Shards will handle the actual data storage operations. A single shard in a production environment is usually made up of a replica set rather than a single machine. If primary shard server goes down, data will still be accessible. Most importantly, the data in MongoDB Cluster is evenly distributed among these shards.

  • Replicas and Replica Set

    “Replication sets” handle the replication in MongoDB, which is a MongoDB implementation. Replication sets resemble nodes in a master-slave configuration at their most basic level. Therefore, to apply changes to secondary members, we can use the primary member.

    For highly available distributed datasets, how do we set up a Sharded Cluster?

    Configure Query Router and Initialize Config Servers

    We can start the configuration server by giving it the roles of configsvr and configdb. By adding –configsvr and –configdb to the command, We can start the mongod and mongos servers.

    Start Replication and Add Members

    Initiate the replica set from the mongo shell:

    rs.initiate()

    The current host is the only member of the replica set created by this command.

    Add the following hosts to the replica set while still connected to the mongo shell:

    rs.add("mongo-repl-2")
    rs.add("mongo-repl-3")

    Similarly, If we configured other members for our replica set, use the same command and the hostnames we specified in our /etc/hosts file to add them to our replica set.

    Check the configuration of our replica set:
    rs.conf()

    This will display a replica set configuration object containing information about each member as well as some replica set metadata.

    We can also check the status of our replica set if necessary in the future:
    rs.status()

    This displays the set’s state, uptime, and other information. If our replica set is properly configured, the data should be present on both secondary and primary members.

    Add Shards to the Cluster

    Add each shard individually from the mongos interface:

    sh.addShard( "mongo-shard-1:27017" )
    sh.addShard( "mongo-shard-2:27017" )

    We don’t need to log into each shard individually and establish a connection to add a new shard. In short, we can do everything from a single mongos connection. If we have more than two shards, we can use this format to add more. Make any necessary changes to the hostnames in the command above. If we used replica sets instead of single servers for each shard, we can add them now with a similar command:

    sh.addShard( "rs0/mongo-repl-1:27017,mongo-repl-2:27017,mongo-repl-3:27017" )

    rs0 is the name of the first shard’s replica set, mongo-repl-1 is the name of the shard’s first host (which uses port 27017), and so on. However, each replica set will require its own run of the above command.

    Enable Sharding at Database Level

    On the new database, enable sharding:
    sh.enableSharding("exampleDB")

    Enable Sharding at Collection Level

    Hash the _id key of a new collection called exampleCollection. As a default, the _id key is the basic index for new documents:

    db.exampleCollection.ensureIndex( { _id : "hashed" } )

    Finally, divide the collection into shards:

    sh.shardCollection( "exampleDB.exampleCollection", { "_id" : "hashed" } )

    Test our Cluster

    Examine the distribution of our data:

    db.exampleCollection.getShardDistribution()

    [Looking for a solution to another query? We are just a click away.]

    Conclusion

    In short, Learning MongoDB Sharding, Replication and Clusters is very critical as it’s A popular choice for web applications and websites these days.

    PREVENT YOUR SERVER FROM CRASHING!

    Never again lose customers to poor server speed! Let us help you.

    Our server experts will monitor & maintain your server 24/7 so that it remains lightning fast and secure.

    GET STARTED

0 Comments

Submit a Comment

Your email address will not be published. Required fields are marked *

Never again lose customers to poor
server speed! Let us help you.