Replication là tiến trình đồng bộ hóa dữ liệu từ nhiều Server. Replication cung cấp sự dư thừa và tăng dữ liệu có tính khả dụng với nhiều bản sao dữ liệu trên nhiều Database Server khác nhau. Replication bảo vệ một cơ sở dữ liệu từ việc thất thoát của một Server nào đó. Replication cũng cho phép bạn phục hồi dữ liệu từ việc các lỗi ở phần cứng hoặc từ việc ngắt kết nối dịch vụ. Với các bản sao dữ liệu bổ sung, bạn có thể sử dụng cho việc phục hồi, báo cáo, hoặc backup.
Tại sao sử dụng Replication?
- Để làm cho dữ liệu của bạn an toàn.
- Tăng tính khả dụng cao cho dữ liệu (24*7).
- Phục hồi dữ liệu do một lỗi nào đó.
- Không phải tốn thời gian để duy trì (như backup, xây dựng lại chỉ mục).
- Mở rộng khả năng đọc (đọc từ các bản sao bổ sung).
- Replica Set là trong suốt cho ứng dụng.
Cách Replication làm việc trong MongoDB
MongoDB sử dụng Replica Set để thực hiện Replication. Một Replica Set là một nhóm các sự thể hiện của mongodb mà host cùng tập hợp dữ liệu đó. Trong một Replica, một node là Primary node (có thể gọi là node thứ cấp) sẽ nhận tất cả các hoạt động ghi. Tất cả sự thể hiện (instance) khác, thứ cấp, áp dụng các hoạt động từ node thứ cấp để mà chúng có cùng tập dữ liệu. Replica Set có thể chỉ có một node thứ cấp.
- Replica Set là một nhóm của hai hoặc nhiều node (nói chung, cần tối thiểu 3 node).
- Trong một Replica Set, một node là node thứ cấp và các node còn lại là sơ cấp.
- Tất cả dữ liệu tái tạo từ node sơ cấp đến node thứ cấp.
- Tại thời điểm duy trì tự động, việc lựa chọn thiết lập cho sơ cấp và một node sơ cấp được lựa chọn.
- Sau khi phục hồi node đã thất bại, một lần nữa nó lại kết hợp Replica Set và làm việc như một node thứ cấp.
Dưới đây là một sơ đồ đặc trưng cho Replication trong MongoDB, trong đó ứng dụng ở Client luôn luôn tương tác với node sơ cấp và node sơ cấp này sau đó tái tạo dữ liệu cho node thứ cấp.
Đặc điểm của Replica Set
- Một Cluster gồm N node
- Bất kỳ node nào có thể là sơ cấp
- Tất cả hoạt động ghi là ở sơ cấp
- Tự động duy trì
- Tự động phục hồi
Cài đặt một Replica Set
Trong chương này, chúng ta sẽ chuyển đổi mongo instance thành một Replica Set. Để chuyển đổi thành Replica Set, bạn theo các bước sau:
- Tắt MongoDB Server đang chạy.
Bây giờ, khởi động MongoDB Server với việc xác định tùy chọn --replSet. Cú pháp cơ bản của --replSet như sau:
mongod --port "PORT" --dbpath "YOUR_DB_DATA_PATH" --replSet "REPLICA_SET_INSTANCE_NAME"
Ví dụ
mongod --port 27017 --dbpath "D:\set up\mongodb\data" --replSet rs0
Nó sẽ bắt đầu một mongod instance với tên rs0, trên cổng 27017. Bây giờ, bắt đầu dòng lệnh và kết nối tới mongo instance này. Trong Mongo Client thông báo lệnh rs.initiate() để khởi tạo một Replica Set mới. Để kiểm tra cấu hình Replica Set, bạn thông báo lệnh rs.conf(). Để kiểm tra trạng thái của Replica Set, bạn thông báo lệnh rs.status().
Thêm các thành viên tới Replica Set
Để thêm các thành viên tới Replica Set, bắt đầu mongod instance trên nhiều thiết bị. Bây giờ, bắt đầu một Mongo Client và thông báo một lệnh rs.add().
Cú pháp
Cú pháp cơ bản của lệnh rs.add() như sau:
>rs.add(HOST_NAME:PORT)
Ví dụ
Giả sử tên của mongod instance của bạn là mongod1.net và đang chạy trên cổng 27017. Để thêm instance này tới Replica Set, bạn thông báo lệnh rs.add() trong Mongo Client:
>rs.add("mongod1.net:27017")
>
Bạn có thể thêm instance tới Replica Set chỉ khi bạn đã kết nối tới node sơ cấp. Để kiểm tra xem bạn đã kết nối tới node sơ cấp này chưa, bạn thông báo lệnh db.isMaster() trong Mongo Client.