DEV Community

Cover image for Master–Slave (Primary–Replica) Replication
Nishikanta Ray
Nishikanta Ray

Posted on

Master–Slave (Primary–Replica) Replication

If you’re building a modern application that needs speed, availability, and fault tolerance, MongoDB replication is one of the easiest and most powerful features you can use.

📌 What Is Master–Slave (Primary–Replica) Replication?

Replication ensures you have multiple copies of your data across different servers.

In MongoDB:

  • The Primary node handles all writes.

  • Secondary nodes replicate data from the primary and handle reads (optional).

  • If the primary fails, MongoDB automatically promotes a secondary → new primary.

This setup is known as a Replica Set, which is MongoDB’s improved version of the old master–slave architecture.

⭐ Why Do We Need Master–Slave (Primary–Replica) Architecture?

Master–slave replication exists because one single database server cannot handle everything reliably, efficiently, and safely. Splitting responsibilities between a master (primary) and slaves (replicas) solves several real-world problems.

📐 MongoDB Replication Architecture

            +-----------------+
            |     Primary     | <--- Write & Read
            +-----------------+
               /         \
              /           \
+-----------------+   +-----------------+
|   Secondary 1   |   |   Secondary 2   |
+-----------------+   +-----------------+
     Read Only            Read Only
Enter fullscreen mode Exit fullscreen mode

⭐ What Is Slave Replication (Explained Like You’re 5)

Slave replication means:

  • One database is the master → accepts all writes

  • Other databases are slaves/replicas → copy whatever master does

  • Replicas stay almost up-to-date with the master

Think of it like a teacher (master) writing on the board, and

3 students (slaves/replicas) copying everything in real time.

Sometimes students copy late → this is replication lag.

🔁 How Slave Replication Actually Works (Technical Flow)

Below is the internal flow, no fluff:

1. Master records every write into a log

  • MySQL → Binary Log (binlog)

  • MongoDB → Oplog

  • PostgreSQL → WAL Log

Example log entry:

UPDATE products SET stock = 50 WHERE id = 101
Enter fullscreen mode Exit fullscreen mode

2. Slaves read these logs continuously

A slave says:

➡️ “Master, give me the next log entry after position X.”

3. Slaves apply the changes locally

Whatever operation appears in the log:

  • INSERT

  • UPDATE

  • DELETE

…slaves replay them in the same order.

4. After applying logs → slave becomes synced

This cycle repeats non-stop.


⏳ Replication Delay (Lag): Why It Happens

Slaves may fall behind due to:

  • Slow network

  • Heavy load on slave

  • Large write burst on master

  • Slow disk I/O

  • Complex queries running on slave

When the slave is behind, it shows old data temporarily.


🛠️ How Systems Handle Delays

1️⃣ Read-from-master for critical operations

Apps often use:

  • Normal read → from replica (fast)

  • Critical read (e.g., after update) → from master

This avoids stale data issues.


2️⃣ “Read-your-own-write” rules

If a user writes something (POST/UPDATE):

  • You route that user’s next read to the master only

  • Until replica catches up

Frameworks like Rails, Laravel, Django already support this.


3️⃣ Monitoring replication lag

Tools measure:

replication_lag = slave_last_applied_timestamp - master_timestamp
Enter fullscreen mode Exit fullscreen mode

If lag > X seconds:

→ temporarily stop sending reads to that replica


4️⃣ Write concerns (MongoDB)

MongoDB allows:

{ writeConcern: { w: "majority" } }
Enter fullscreen mode Exit fullscreen mode

Meaning:

→ Write is successful only when most replicas have it

This reduces risk of data inconsistency.


5️⃣ Semi-Sync Replication (MySQL / PostgreSQL)

Master waits until at least one slave confirms:

“Yep, I received the log.”

This avoids data loss.


🔄 How Updates Flow (Example With Steps)

Let’s use a real example:

A user updates their profile:

UPDATE users SET name='Nishikanta' WHERE id=5;
Enter fullscreen mode Exit fullscreen mode

Here’s what happens:

Step 1 — Master writes to its DB

Master updates row in its storage engine.

Step 2 — Master logs the change

Master adds entry to binlog/oplog:

{ op: "update", id: 5, name: "Nishikanta" }
Enter fullscreen mode Exit fullscreen mode

Step 3 — Slaves fetch this log

Replica 1 → “Give me log #520”

Replica 2 → “Give me log #520”

Master streams them.

Step 4 — Slaves apply changes

Replica updates:

id=5  name=Nishikanta
Enter fullscreen mode Exit fullscreen mode

Step 5 — Replicas catch up

Once all logs are applied → they’re in sync.


📊 Diagram: How Replication Works (Clean + Blog-Ready)

                ┌───────────────────────┐
                       MASTER          
                 (Primary - All Writes)
                └───────┬───────────────┘
                        
        Writes  Binlog/Oplog generated
                        
        ┌───────────────┴───────────────┐
                                       
┌────────────────────┐        ┌────────────────────┐
    SLAVE #1                    SLAVE #2        
 (Replica - Reads)           (Replica - Reads)  
└───────┬────────────┘        └──────────┬─────────┘
                                         
            Fetch log continuously       
                Apply updates            
             Handle replication lag      
                                         
  Up-to-date copy of DB            Up-to-date copy of DB
Enter fullscreen mode Exit fullscreen mode

🟩 Conclusion

Master–slave (primary–replica) replication is one of the most essential techniques for building fast, reliable, and highly available modern applications. By separating write operations to the master and distributing read operations across multiple replicas, systems can handle far more traffic, avoid downtime, and guarantee that data remains safe even if a server fails.

Although replication may introduce small delays (replication lag), most real-world systems manage this easily through smart routing, read-after-write strategies, and monitoring tools. The result is a database architecture that provides scalability, resilience, and real-time data redundancy — all without changing how your application writes data.

Whether you’re using MongoDB, MySQL, PostgreSQL, or Redis, mastering replication is a core skill that enables you to build applications that stay fast, stay online, and scale gracefully as your users grow.

Top comments (0)