1. Introduction to Replication
Database Replication is the process of copying and maintaining database objects,
such as tables or entire databases, across multiple servers or locations. This
ensures that data is available in multiple places, improving data accessibility,
reliability, and redundancy. Replication can be used to distribute the load,
enhance fault tolerance, and back up data across different servers.
2. Types of Database Replication
There are several types of replication strategies, each suited for different use
cases and configurations. The most common types include:
a. Master-Slave Replication (Primary-Secondary Replication)
Description: In master-slave replication, one server (the "master") acts as
the central data source, and one or more other servers (the "slaves")
replicate the data from the master. The master handles all write
operations, while the slaves handle read operations.
Use Case: This is ideal for read-heavy applications, where you want to
distribute the read load across multiple servers while ensuring data
consistency from the master.
Advantages:
o Offloads read traffic to replicas.
o Enhances performance by balancing load.
o Provides data redundancy for fault tolerance.
Disadvantages:
o The master server can become a bottleneck for write operations.
o In case the master fails, manual intervention is often needed to
promote a slave to master.
, Example:
-- Master server handles all write operations:
INSERT INTO orders (order_id, product_id, quantity) VALUES (1, 101, 5);
The slave servers will replicate this data from the master, but they won’t accept
direct writes.
b. Master-Master Replication (Multi-Master Replication)
Description: In master-master replication, two or more servers can act as
masters, each capable of accepting both read and write operations.
Changes made on one server are replicated to all other servers in the
system.
Use Case: This is suitable for applications that require high availability and
fault tolerance, as well as the ability to handle writes on multiple servers.
Advantages:
o High availability, since there are multiple masters.
o No single point of failure.
o Read and write operations can be distributed across servers.
Disadvantages:
o More complex conflict resolution is required (if both masters make
conflicting changes).
o Higher chances of data inconsistencies due to network partitions or
conflict resolution issues.
Example:
-- Both servers accept write operations:
INSERT INTO orders (order_id, product_id, quantity) VALUES (2, 102, 3);
Both servers will replicate this change, but if conflicts arise (e.g., simultaneous
updates to the same row), additional mechanisms are needed to resolve them.