Khi primary mất liên lạc quá electionTimeoutMillis (mặc định 10 giây), các secondary mở election: node có oplog mới nhất và nhận được đa số phiếu trở thành primary. Vì cần đa số, cluster phải có số node bỏ phiếu lẻ (3, 5) — cụm 2 node mất 1 node sẽ không bầu được và toàn bộ ghi dừng lại.
Số phận write đang dở phụ thuộc write concern:
w: 1: primary xác nhận ngay khi ghi vào chính nó. Nếu nó chết trước khi secondary sao chép kịp, write đó bị rollback khi node cũ quay lại (dữ liệu bị loại được ghi ra file rollback). Client đã nhận thành công nhưng dữ liệu không còn.w: 'majority': chỉ xác nhận khi đa số node đã nhận. Write đã ack thì chắc chắn tồn tại sau failover — đây là mức nên dùng cho dữ liệu tiền/đơn hàng.
Phía đọc, read concern majority đảm bảo chỉ thấy dữ liệu đã được đa số xác nhận, tức không đọc phải thứ có thể bị rollback. Cặp w: 'majority' + readConcern: 'majority' là cấu hình an toàn tiêu chuẩn.
Với ứng dụng, driver hiện đại bật retryable writes mặc định: driver tự thử lại một lần trên primary mới, và nhờ _id phiên giao dịch nên không tạo bản ghi trùng. Nhờ đó failover thường chỉ biểu hiện thành một khoảng độ trễ vài giây chứ không thành lỗi trả về người dùng — miễn là ứng dụng không tự đóng connection pool khi gặp lỗi mạng ngắn.