Replication là sao chép dữ liệu từ một node primary (ghi) sang một hay nhiều replica (đọc). Mục đích: scale đọc (chia truy vấn đọc cho replica), tính sẵn sàng cao/failover (replica lên thay khi primary chết), và phục vụ backup/analytics không đụng tới primary.
Hai chế độ theo thời điểm xác nhận ghi:
- Đồng bộ (synchronous): primary chờ replica xác nhận đã nhận rồi mới báo commit thành công → không mất dữ liệu khi primary chết, nhưng ghi chậm hơn và phụ thuộc độ trễ/sức khỏe replica.
- Bất đồng bộ (asynchronous): primary commit rồi mới đẩy thay đổi sang replica → ghi nhanh, nhưng replica trễ hơn primary một chút.
Replication lag là khoảng trễ đó: replica chưa kịp cập nhật thay đổi mới nhất. Hệ quả thực tế — read-your-writes: user vừa ghi rồi đọc ngay từ replica có thể thấy dữ liệu cũ. Cách xử lý: đọc dữ liệu vừa ghi từ primary, hoặc dùng replica đủ mới, hoặc chấp nhận eventual consistency ở nơi cho phép. Khi failover, thường phải chọn giữa mất một ít dữ liệu chưa nhân bản (async) và độ trễ ghi (sync).