Hướng dẫn cấu hình Replica Set cho MongoDB trên Ubuntu 22.04 LTS
Giới thiệu
Replica set trong MongoDB là một nhóm các mongod processes để duy trì cùng một cơ sở dữ liệu. Replica set cung cấp khả năng dự phòng và tính sẵn sàng cao.
Replication cung cấp tính dự phòng và nâng cao tính khả dụng của mongoDB. Với nhiều bản sao chép trên nhiều database server khác nhau, replication nâng cao mức độ chịu lỗi chống lại việc mất dữ liệu trên single database.
Trong một số trường hợp, replication có thể cải thiện khả năng đọc dữ liệu vì client có thể đọc dữ liệu trên nhiều database server khác nhau. Duy trì các bản sao dữ liệu làm tăng tính cục bộ và khả dụng của dữ liệu.
Các replica set cũng có thể duy trì cho các mục đích như khôi phục dữ liệu, sao lưu.
Điều kiện tiên quyết
Để hoàn thành hướng dẫn này, chúng ta sẽ cần:
Ba máy chủ, mỗi máy chạy Ubuntu 22.04.
MongoDB được cài đặt trên mỗi máy chủ Ubuntu của chúng ta. Nếu máy chủ chúng ta chưa cài đặt Mongo thì có thể tham khảo hướng dẫn sau : Hướng dẫn cài đặt MongoDB trên Ubuntu 22.04 LTS .
Trong hướng dẫn này sẽ sử dụng 3 máy chủ lần lượt có IP và hostname như sau:
10.123.11.36
mongodb0.replset.member
10.123.12.165
mongodb1.replset.member
10.123.12.186
mongodb2.replset.member
Trong đó chúng ta cấu hình replica set với 3 node (1primary và 2 slave) với 10.123.11.36 là primary và 10.123.12.165 và 10.123.12.186 lần lượt là slave 1 và slave 2.
Cấu hình phân giải DNS
Trước tiên, chúng ta sẽ cần thiết lập phân giải DNS trên mỗi máy chủ để chúng có thể giao tiếp với nhau bằng tên máy chủ.
Tiến hành sửa file /etc/hosts
trên mỗi node và thêm các dòng sau:
Thêm các dòng sau:
Lưu và đóng file.
Chúng ta có thể tiến hành bước tiếp theo.
Cấu hình node primary
Bước này thực hiện bằng cách chỉnh sửa file cấu hình của MongoDB /etc/mongod.conf
của node primary.
Tìm phần network interfaces
trong file /etc/mongod.conf
Thêm dấu ,
vào dòng bindIp
bằng tên máy chủ như sau:
Tiếp theo, tìm dòng #replication:
ở cuối file. Bỏ ghi chú dòng này bằng cách bỏ dấu thăng (#). Sau đó, thêm một replSetName, theo sau là tên mà MongoDB sẽ sử dụng để xác định tập hợp bản sao:
Trong ví dụ này, replSetName
giá trị của chỉ thị là "replica0". Chúng ta có thể cung cấp bất kỳ tên nào chúng ta muốn ở đây.
Lưu ý: Có hai khoảng trắng trước replSetName và tên được đặt trong dấu ngoặc kép (").
Lưu và đóng file. Như vậy chúng ta đã cấu hình node primary tiếp theo tiến hành cấu hình node slave.
Cấu hình node slave
Tiếp theo, chúng ta sẽ cần phải cấu hình 2 node Slave MongoDB .
Bước này thực hiện bằng cách chỉnh sửa file cấu hình của MongoDB /etc/mongod.conf
của node Slave 1.
Tìm phần network interfaces
trong file /etc/mongod.conf
Thêm dấu ,
vào dòng bindIp
bằng tên máy chủ như sau:
Tiếp theo, tìm dòng #replication:
ở cuối file. Bỏ ghi chú dòng này bằng cách bỏ dấu thăng (#). Sau đó, thêm một replSetName, theo sau là tên mà MongoDB sẽ sử dụng để xác định tập hợp bản sao:
Trong ví dụ này, replSetName
giá trị của chỉ thị là "replica0".
Lưu ý: Có hai khoảng trắng trước replSetName và tên được đặt trong dấu ngoặc kép (").
Lưu và đóng file. Như vậy chúng ta đã cấu hình node Slave 1 thành công tiếp theo tiến hành cấu hình node Slave 2.
Bước này thực hiện bằng cách chỉnh sửa file cấu hình của MongoDB /etc/mongod.conf
của node Slave 2.
Tìm phần network interfaces
trong file /etc/mongod.conf
Thêm dấu ,
vào dòng bindIp
bằng tên máy chủ như sau:
Tiếp theo, tìm dòng #replication:
ở cuối file. Bỏ ghi chú dòng này bằng cách bỏ dấu thăng (#). Sau đó, thêm một replSetName, theo sau là tên mà MongoDB sẽ sử dụng để xác định tập hợp bản sao:
Trong ví dụ này, replSetName
giá trị của chỉ thị là "replica0".
Lưu ý: Có hai khoảng trắng trước replSetName và tên được đặt trong dấu ngoặc kép (").
Lưu và đóng file. Như vậy chúng ta đã cấu hình node Slave 2 thành công.
Tại thời điểm này, tất cả các node đã được cấu hình.
Khởi động lại dịch vụ MongoDB trên tất cả các node
Tiếp theo, bạn sẽ cần khởi động lại dịch vụ MongoDB trên tất cả các node lần lượt.
Trên node primary, khởi động lại dịch vụ MongoDB bằng lệnh sau:
Trên Slave 1, khởi động lại dịch vụ MongoDB bằng lệnh sau:
Trên Slave 2, khởi động lại dịch vụ MongoDB bằng lệnh sau:
Thiết lập Replica Set
Tiếp theo, chúng ta sẽ cấu hình replicate trên node primary và các node slave.
Trên node primary, kết nối với Mongo bằng người dùng quản trị:
Tiếp theo, khởi tạo tập hợp bản sao bằng lệnh sau:
Kết quả trả về như sau:
Tiếp theo, thêm node Slave 1 làm thành viên bằng lệnh sau:
Thực thi lệnh sau:
Thu được kết quả:
Tiếp theo, thêm node Slave 2 làm thành viên bằng lệnh sau:
Kết quả như sau:
Chúng ta cũng có thể kiểm tra trạng thái của tất cả các node bằng lệnh sau;
Kết quả như sau:
Như vậy chúng ta đã tạo thành công Replica Set cho MongoDB trên Ubuntu 22.04 LTS.
Thử nghiệm Replica Set
Bản sao được cấu hình trên node chính. Bây giờ, chúng ta thực hiện kiểm tra xem bản sao có hoạt động hay không.
Trên node primary, tạo cơ sở dữ liệu và thêm một số giá trị.
Tiến hành kết nối mongo Shell bằng lệnh sau:
Tạo cơ sở dữ liệu và thêm một số giá trị.
Đầu ra:
Kiểm tra cơ sở dữ liệu của bạn bằng lệnh sau:
Đầu ra:
Sau đó thực hiện node Slave 1, kết nối với Mongo shell bằng lệnh sau:
Sau khi kết nối, hãy chạy lệnh sau để bật các hoạt động đọc thành viên phụ trên cơ sở kết nối:
Tiếp theo, thay đổi cơ sở dữ liệu thành 123hostDB:
Kết quả:
Tiếp theo, chạy lệnh sau để hiển thị tất cả các tài liệu:
Nếu bản sao đang hoạt động, chúng ta sẽ thấy danh sách các tài liệu mẫu mà chúng ta đã tạo trên node primary.
Lời Kết
Như vậy chúng ta đã cấu hình Replica Set cho MongoDB trên Ubuntu 22.04 LTS chúc các bạn thành công.
Tính năng đang được phát triển