Replica Set trong MongoDB là gì?

Replica Set là một nhóm các bản sao của cùng một cơ sở dữ liệu trong MongoDB. Nó cho phép dữ liệu được sao lưu và phân phối trên nhiều máy chủ khác nhau, nhằm đảm bảo tính khả dụng, độ tin cậy và phục hồi dữ liệu trong trường hợp có sự cố. Một replica set bao gồm ít nhất ba thành viên:

  1. Primary: Là thành viên chính, nơi thực hiện tất cả các ghi (write) và cập nhật dữ liệu. Tất cả các thay đổi sẽ được ghi vào primary.
  2. Secondary: Là các thành viên phụ, sao chép dữ liệu từ primary và có thể phục vụ các yêu cầu đọc (read) nếu được cấu hình. Các thành viên này không thể thực hiện các thao tác ghi (write) trừ khi chúng trở thành primary.
  3. Arbiter: Là thành viên không lưu trữ bản sao của dữ liệu nhưng tham gia vào quá trình bầu chọn để xác định primary. Arbiters được sử dụng trong các replica set có số lượng thành viên lẻ để tránh tình trạng bầu chọn hòa.

Tầm quan trọng của Replica Set

  • Tính khả dụng cao: Nếu primary gặp sự cố, một trong các secondary có thể trở thành primary mới, đảm bảo rằng hệ thống vẫn hoạt động.
  • Khả năng phục hồi: Dữ liệu được sao chép trên nhiều máy chủ, giúp khôi phục dễ dàng trong trường hợp mất dữ liệu.
  • Phân tải đọc: Các yêu cầu đọc có thể được phân phối đến các secondary, giảm tải cho primary.

Cách thiết lập Replica Set trong MongoDB

Bước 1: Cài đặt MongoDB

Trước tiên, bạn cần cài đặt MongoDB trên các máy chủ mà bạn muốn cấu hình cho replica set.

Bước 2: Khởi động MongoDB với tùy chọn replica set

Khi khởi động MongoDB, bạn cần chỉ định tên cho replica set bằng cách sử dụng tùy chọn --replSet.

mongod --replSet "myReplicaSet" --port 27017 --dbpath /data/db1

Thực hiện lệnh tương tự trên các máy chủ khác, thay đổi --dbpath cho phù hợp.

Bước 3: Kết nối đến MongoDB

Mở một terminal và kết nối đến một trong các thành viên của replica set bằng mongo.

mongo --port 27017

Bước 4: Thiết lập Replica Set

Sau khi kết nối, bạn sẽ cần thực hiện cấu hình cho replica set. Sử dụng lệnh sau để khởi động replica set:

rs.initiate();

Bước 5: Thêm thành viên vào Replica Set

Sau khi khởi động, bạn có thể thêm các thành viên khác vào replica set. Ví dụ:

rs.add("hostname1:27017");
rs.add("hostname2:27017");

Thay thế hostname1hostname2 bằng địa chỉ của các máy chủ khác mà bạn đã cài đặt MongoDB.

Bước 6: Kiểm tra trạng thái của Replica Set

Để kiểm tra trạng thái của replica set, bạn có thể sử dụng lệnh sau:

rs.status();

Lệnh này sẽ hiển thị trạng thái của các thành viên trong replica set, giúp bạn xác nhận rằng mọi thứ đang hoạt động bình thường.

Bước 7: Cấu hình các tùy chọn bổ sung (tùy chọn)

  • Arbiters: Nếu bạn muốn thêm arbiter, bạn có thể sử dụng lệnh sau:
rs.addArb("hostname3:27017");
  • Tùy chỉnh các cấu hình: Bạn có thể tùy chỉnh nhiều cấu hình cho replica set như ưu tiên, thời gian chờ, và số lượng tối thiểu thành viên có mặt để bầu chọn primary.

Kết luận

Replica Set là một thành phần quan trọng trong MongoDB, giúp đảm bảo tính khả dụng và phục hồi dữ liệu. Việc thiết lập replica set không quá phức tạp, nhưng yêu cầu bạn phải cẩn thận trong từng bước để đảm bảo rằng mọi thứ được cấu hình chính xác. Bằng cách áp dụng replica set, bạn có thể tối ưu hóa hệ thống của mình, tăng cường khả năng chịu lỗi và bảo vệ dữ liệu quan trọng.