MongoDB - Nhân rộng
Replication là quá trình đồng bộ hóa dữ liệu giữa nhiều máy chủ. Nhân rộng cung cấp khả năng dự phòng và tăng tính khả dụng của dữ liệu với nhiều bản sao dữ liệu trên các máy chủ cơ sở dữ liệu khác nhau. Nhân rộng bảo vệ cơ sở dữ liệu khỏi sự mất mát của một máy chủ. Nhân rộng cũng cho phép bạn phục hồi sau lỗi phần cứng và gián đoạn dịch vụ. Với các bản sao bổ sung của dữ liệu, bạn có thể dành một bản sao để khôi phục, báo cáo hoặc sao lưu sau thảm họa.
Tại sao lại nhân rộng?
- Để giữ an toàn cho dữ liệu của bạn
- Tính khả dụng của dữ liệu cao (24 * 7)
- Khôi phục thảm họa
- Không có thời gian chết để bảo trì (như sao lưu, xây dựng lại chỉ mục, nén)
- Đọc tỷ lệ (các bản sao bổ sung để đọc từ đó)
- Bộ bản sao là minh bạch đối với ứng dụng
Cách nhân rộng hoạt động trong MongoDB
MongoDB đạt được sự nhân rộng bằng cách sử dụng bộ bản sao. Một tập hợp bản sao là một nhómmongodcác phiên bản lưu trữ cùng một tập dữ liệu. Trong một bản sao, một nút là nút chính nhận tất cả các thao tác ghi. Tất cả các bản sao khác, chẳng hạn như bản thứ hai, áp dụng các phép toán từ bản chính để chúng có cùng một tập dữ liệu. Tập hợp bản sao chỉ có thể có một nút chính.
Tập hợp bản sao là một nhóm gồm hai hoặc nhiều nút (thường tối thiểu phải có 3 nút).
Trong một tập hợp bản sao, một nút là nút chính và các nút còn lại là nút phụ.
Tất cả dữ liệu sao chép từ nút chính sang nút phụ.
Tại thời điểm tự động chuyển đổi dự phòng hoặc bảo trì, thiết lập bầu cử cho chính và một nút chính mới được bầu.
Sau khi khôi phục nút bị lỗi, nó lại tham gia vào tập hợp bản sao và hoạt động như một nút phụ.
Một sơ đồ điển hình về sao chép MongoDB được hiển thị trong đó ứng dụng khách luôn tương tác với nút chính và nút chính sau đó sao chép dữ liệu sang các nút phụ.
Tính năng của bộ bản sao
- Một cụm N nút
- Bất kỳ một nút nào cũng có thể là nút chính
- Tất cả các hoạt động ghi chuyển đến chính
- Chuyển đổi dự phòng tự động
- Phục hồi tự động
- Sự đồng thuận bầu cử sơ bộ
Thiết lập một bộ bản sao
Trong hướng dẫn này, chúng tôi sẽ chuyển đổi cá thể MongoDB độc lập thành một tập hợp bản sao. Để chuyển đổi sang tập hợp bản sao, sau đây là các bước:
Đã tắt máy chủ MongoDB.
Khởi động máy chủ MongoDB bằng cách chỉ định - tùy chọn replSet. Sau đây là cú pháp cơ bản của --replSet -
mongod --port "PORT" --dbpath "YOUR_DB_DATA_PATH" --replSet "REPLICA_SET_INSTANCE_NAME"
Thí dụ
mongod --port 27017 --dbpath "D:\set up\mongodb\data" --replSet rs0
Nó sẽ bắt đầu một cá thể mongod với tên rs0, trên cổng 27017.
Bây giờ bắt đầu dấu nhắc lệnh và kết nối với phiên bản mongod này.
Trong ứng dụng khách Mongo, hãy phát hành lệnh rs.initiate() để bắt đầu một tập hợp bản sao mới.
Để kiểm tra cấu hình thiết lập bản sao, hãy ra lệnh rs.conf(). Để kiểm tra trạng thái của bộ bản sao, hãy sử dụng lệnhrs.status().
Thêm thành viên vào tập hợp bản sao
Để thêm thành viên vào tập hợp bản sao, hãy bắt đầu các phiên bản mongod trên nhiều máy. Bây giờ hãy bắt đầu một ứng dụng khách mongo và ra lệnhrs.add().
Cú pháp
Cú pháp cơ bản của rs.add() lệnh như sau:
>rs.add(HOST_NAME:PORT)
Thí dụ
Giả sử tên phiên bản mongod của bạn là mongod1.net và nó đang chạy trên cổng 27017. Để thêm phiên bản này vào tập hợp bản sao, hãy ra lệnhrs.add() trong ứng dụng Mongo.
>rs.add("mongod1.net:27017")
>
Bạn có thể thêm cá thể mongod vào tập hợp bản sao chỉ khi bạn được kết nối với nút chính. Để kiểm tra xem bạn có được kết nối với chính hay không, hãy ra lệnhdb.isMaster() trong ứng dụng mongo.