Structure
Database Replication có thể được sử dụng trong nhiều hệ quản lý cơ sở dữ liệu, thường có mối quan hệ Master – Slave (Chủ nhân – Nô lệ)
– Master database thường chỉ hỗ trợ các thao tác ghi dữ liệu. Tức là, tất cả các câu lệnh như INSERT, UPDATE, DELETE sẽ thực hiện trên master database.
– Còn các Slave database sẽ copy dữ liệu từ master database và chỉ hỗ trợ các thao tác đọc dữ liệu.
Việc phân chia nhiệm vụ rõ ràng này sẽ giúp cho quá trình đồng bộ dữ liệu không bị nhập nhằng giữa master và slave.
Hầu hết các ứng dụng sẽ thực hiện ĐỌC dữ liệu NHIỀU HƠN là ghi dữ liệu. Do đó, số lượng Slave database trong một hệ thống thường sẽ nhiều hơn số lượng Master database.
✅ Nhờ việc áp dụng Database Replication mà hệ thống của chúng ta sẽ có:
– Hiệu suất tốt hơn (Performance): Vì các thao tác đọc ghi được xử lý riêng ở Master và Slave, nên chúng ta có thể tận dụng để cho phép xử lý song song nhiều truy vấn hơn.
– Độ tin cậy (Reliability): Nếu một trong những Database Server bị sập, dữ liệu vẫn sẽ được bảo toàn, vì dữ liệu đã được copy trên nhiều Database khác nhau.
– Tính khả dụng (High Availability): Trong bài viết về Load Balancer mình cũng đã chia sẻ với các bạn về thuật ngữ này, và nó ảnh hưởng đến uy tín của dự án, công ty như thế nào. Cũng nhờ việc copy dữ liệu trên nhiều Database khác nhau, trang web của bạn vẫn đảm bảo hoạt động bình thường. Ví dụ: Khi một Slave Database có vấn đề, thì dữ liệu sẽ được đọc từ một Slave Database khác.
Trong các hệ thống database phân tán, replication (sao chép dữ liệu) là kỹ thuật cực kỳ quan trọng để tăng tính sẵn sàng (availability), khả năng chịu lỗi (fault tolerance) và phân tán tải đọc (read scalability).
Là một Senior Backend Developer, bạn cần nắm rõ các loại replication, ưu nhược điểm và tình huống sử dụng phù hợp.
🔁 CÁC LOẠI REPLICATION TRONG DATABASE
1. 🟢 Master-Slave Replication (Primary-Replica)
Cách hoạt động:
Master (primary) xử lý tất cả các ghi (write).
Slave(s) (replica) chỉ xử lý truy vấn đọc (read), đồng bộ dữ liệu từ master.
✅ Ưu điểm:
Scale tốt với hệ thống đọc nhiều, ghi ít.
Dễ cài đặt và phổ biến (MySQL, PostgreSQL đều hỗ trợ).
❌ Nhược điểm:
Không scale được ghi.
Nếu master chết → downtime (trừ khi có failover system).
2. 🟡 Master-Master Replication (Active-Active)
Cách hoạt động:
Nhiều node cùng ghi và đồng bộ dữ liệu qua lại.
Cả hai (hoặc nhiều hơn) đều vừa đọc vừa ghi.
✅ Ưu điểm:
High availability.
Tăng throughput ghi nếu load được phân bố tốt.
❌ Nhược điểm:
Xử lý conflict phức tạp (ví dụ hai node cùng update một bản ghi).
Không phù hợp nếu không có conflict resolution logic mạnh.
3. 🔵 Peer-to-Peer Replication (Multi-master, decentralized)
Cách hoạt động:
Tất cả các node đều có thể ghi và đồng bộ ngang hàng.
Không có master, hệ thống tự động đồng bộ 2 chiều hoặc đa chiều.
✅ Ưu điểm:
Tính phân tán và sẵn sàng rất cao.
Phù hợp với hệ thống global (đa vùng địa lý).
❌ Nhược điểm:
Độ phức tạp cao nhất.
Rất dễ xảy ra conflict, cần cơ chế resolve mạnh (timestamp, version, vector clock...).
4. 🔴 Asynchronous vs Synchronous Replication
Asynchronous
Master ghi xong, không chờ replica xác nhận.
Hiệu năng cao
Có thể mất dữ liệu nếu master crash sớm.
Synchronous
Master chỉ ghi khi mọi replica ghi xong.
Đảm bảo dữ liệu an toàn hơn
Latency cao, chậm hơn, khó scale.
💡 Ví dụ thực tiễn
Hệ thống đọc nhiều như e-commerce
Master-Slave
Hệ thống global (Zalo, Facebook)
Multi-master, Peer-to-Peer
Yêu cầu 0 mất mát dữ liệu
Synchronous replication
Ưu tiên tốc độ, chịu mất mát nhẹ
Asynchronous replication
Nếu bạn dùng các công nghệ như:
MySQL → Hỗ trợ master-slave rất tốt.
PostgreSQL + Patroni → Có synchronous replication.
MongoDB → Hỗ trợ replica set (primary-secondary).
Cassandra → Peer-to-peer replication theo mô hình Ring.
Last updated