- MongoDB là gì? Các khái niệm trong MongoDB
- Hướng dẫn cài đặt, cấu hình MongoDB trên Windows 10
- Cài đặt và sử dụng Robo 3T (RoboMongo) trên Windows
- Hướng dẫn cài đặt MongoDB trên Linux (Ubuntu 16.04)
- Hướng dẫn MongoDB – Tạo database trong MongoDB
- Hướng dẫn MongoDB – Xóa, DROP database trong MongoDB
- Tạo bảng, collections trong MongoDB (Tạo bằng dòng lệnh, Robo3t)
- Xóa bảng, collections trong MongoDB (Xóa bằng lệnh/ Robo3T)
- Insert document, bản ghi trong MongoDB (Insert bằng lệnh, Robo3T)
- Truy vấn dữ liệu/document, find(), Select, Where trong MongoDB
- Xóa document, row trong MongoDB (bằng dòng lệnh, Robo3T)
- Update document, dữ liệu trong MongoDB
- Projection trong MongoDB (SELECT field/column trong MongoDB)
- Sắp xếp trong MongoDB(orderBy, sorting() trong MongoDB)
- Ưu nhược điểm của MongoDB, khi nào nên dùng MongoDB
- Xóa cột, field, trường của collections trong MongoDB ($unset)
- Kiểm tra null, check tồn tại trong MongoDB với $exists
- Đổi tên field trong MongoDB với $rename
- Tạo user/roles, phân quyền người dùng trên MongoDB
- Các loại roles, vai trò, quyền trong MongoDB.
- Đăng nhập mongodb với username và password (database mongo)
- Tạo Replica Set trong MongoDB, Ví dụ Replica Set MongoDB
- Replication, Replica Set trong MongoDB là gì?
- Phân trang trong MongoDB (skip(), limit() paging trong MongoDB)
Replication, Replica Set trong MongoDB là gì?
Replication, Replica Set trong MongoDB là gì?
Replication có nghĩa là nhân bản, trong MongoDB thì replication là một tiến trình đồng bộ hóa dữ liệu.
Cơ chế của nó như sau:
Trong thực tế, nhiều trường hợp để server hoạt động ổn định người ta dùng nhiều hơn 1 server để lưu dữ liệu. Ví dụ dùng 2 server mongodb là A và B, khi có dữ liệu mới được lưu vào A thì nó sẽ tiến hành sao lưu, đồng bộ sang B (quá trình replica) nếu A bị chết hoặc mất dữ liệu thì ta chuyển sang kết nối tới B để lấy dữ liệu như thế sẽ đảm bảo server luôn hoạt động và dữ liệu tin cậy không bị mất mát.
Quá trình replication này khác với quá trình backup / sao lưu ở chỗ là nó thực hiện realtime. Tức là khi bạn thêm dữ liệu vào A thì nó sẽ lập tức đồng bộ sang B… Trong khi quá trình backup thì thường thực hiện theo lịch (chạy cuối mỗi ngày, chạy hàng giờ…) và có thể phải xây dựng lại chỉ mục / index
(Sử dụng nhiều server có nhiều lợi ích thế nhưng không phải lúc nào cũng áp dụng nhé. Việc sử dụng nhiều server MongoDB kéo theo nhiều vấn đề như cấu hình và code phức tạp hơn, chi phí tăng…)
Replica Set trong MongoDB
Replica Set là một nhóm các server MongoDB trong hệ Replication. (Một nhóm server MongoDB tham gia thực hiện việc nhân bản.)
Mỗi server MongoDB trong Replica Set được coi là 1 node hoặc 1 thể hiện.
Trong một Replica Set, sẽ có một node chính (primary node) và nhiều node phụ (secondary node) + node trọng tài (arbiter node).
Primary node sẽ thực hiện nhận tất cả các write request để thực hiện thêm/sửa/xóa data, các thay đổi trên data này sẽ được ghi lại vào file oplog
, khi file oplog thay đổi, nó sẽ dựa vào các thông tin thay đổi đó để đồng bộ dữ liệu sang các secondary node. (arbiter node sẽ không thực hiện ghi dữ liệu)
Cơ chế Automatic Failover trong Replica Set
Các node trong Replica Set luôn duy trì kết nối với nhau (kết nối heartbeat ). Khi primary node bị mất kết nối với các node còn lại (bị shutdown, connection timeout…) thì các node còn lại sẽ tự động sẽ tự động bầu ra 1 node làm primary node.
Quá trình bầu primary node giống như bỏ phiếu vậy, node nào nhiều phiếu hơn thì trở thành primary node. Tuy nhiên sẽ có trường hợp có 2 node cùng số phiếu. Trong trường hợp này node arbiter sẽ quyết định node nào là primary node.
(Arbiter node chỉ có tác dụng ra bầu ra primary node chứ không chứa dữ liệu)
Khi primary node bị ngắt kết nối lúc trước được kết nối trở lại vào Replica Set thì nó sẽ trở thành secondary node.
Mặc định, Client sẽ đọc dữ liệu từ primary node. Tuy nhiên ta có thể cấu hình cho phép client đọc dữ liệu từ các secondary node để giảm tải áp lực cho primary node.
Cài đặt Replication Set trong MongoDB
Okay, Done!
References: