Chào Mọi Người.
Hôm nay mình sẽ hướng dẫn mọi người cài đặt MongoDB Replica Set cho MongoDB trên CentOS 7.
Cài Đặt.
Chuẩn Bị.
Để cài đặt MongoDB Replica Set cho MongoDB trên CentOS 7 thì mọi người chuẩn bị giúp mình :
- Từ 2 đến 3 VPS/Server đã được cài đặt sẵn MongoDB và sử dụng CentOS 7.
- Tài khoản Root của các VPS/Server trên.
Cài Đặt.
Ở bài viết này mình sử dụng 2 VPS đã được cài đặt sẵn MongoDB trên CentOS 7.
2 VPS lần lượt có IP local là 10.124.11.49 và 10.124.11.71
Đầu tiên ta sẽ tiến hành cấu hình file hosts trên cả 2 VPS để khi cấu hình MongoDB Replica thì 2 VPS có thể giao tiếp với nhau.
vi /etc/hosts
Nội dung của file hosts sẽ như sau :
10.124.11.49 master
10.124.11.71 slave
Trong đó VPS có IP 10.124.11.49 sẽ là PRIMARY còn VPS có IP 10.124.11.71 là SECONDARY.
Tiếp theo ta sẽ cấu hình trên file config của MongoDB trên từng VPS với nội dung sau :
- Thêm địa chỉ IP local của VPS vào dòng bindIp
- Ở mục replication ta sẽ bỏ comment và thêm dòng “replSetName: demo-mongo-repli” , trong đó demo-mongo-repli là tên của Replica Set.
Cấu hình MongoDB trên VPS PRIMARY.
Cấu hình MongoDB trên VPS SECONDARY.
Tiếp theo ta tiến hành khởi động lại MongoDB để các cấu hình được lưu lại.
Ta có thể sử dụng lệnh “netstat” để kiểm tra xem MongoDB đã listen IP local hay chưa.
netstat -nlpt
Tới đây ta sẽ tạo User tên là “mongo-admin” cho MongoDB với quyền Root.
Truy cập vào Mongo, sử dụng database admin và tạo User.
use admin
db.createUser({user: "mongo-admin", pwd: "mongo-pass", roles: [{role: "root", db: "admin"}]})
Như vậy ta đã tạo được User với quyền Root trên MongoDB, ta sẽ tiến hành băt khởi tạo MongoDB Replica Set.
mongo --host demo-mongo-repli/master:27017 --username mongo-admin --password mongo-pass --authenticationDatabase admin
MongoDB Replica Set đã được khởi tạo, ta có thể sử dụng lệnh “rs.status()” để xem status của Replica.
Ta có thể thấy hiện tại thì trên Replica Set chỉ có một Node, ta sẽ tiến hành thêm Node thứ 2 vào bằng câu lệnh ” rs.add(“”) “.
rs.add("slave:27017")
Sau đó, sử dụng lệnh “rs.status()” để xem lại Status của Replica Set.
Tiếp theo ta sẽ truy cập vào MongoDB trên SECONDARY để cấu hình cho phép khi truy cập MongoDB trên SECONDARY sẽ có quyền Read.
Lưu ý : Nếu ta truy cập vào Mongo với tùy chọn –host có Replica Set thì mặc định ta sẽ truy cập vào Node PRIMARY.
Vì vậy ở đây ta sẽ truy cập vào MongoDB với tùy chọn –host không có Replica Set.
mongo --host slave:27017 --username mongo-admin --password mongo-pass --authenticationDatabase admin
Ta có thể sử dụng câu lệnh “show databases;” để thử xem ta có đọc được dữ liệu từ Node SECONDARY hay không.
Như hình trên thì thấy đã có xuất hiện lỗi, để cho phép đọc được dữ liệu từ Node SECONDARY thì ta sẽ sử dụng câu lệnh “rs.slaveOk()”, sau đó tiến thử show lại database.
Tới đây thì việc cấu hình MongoDB Replica Set đã hoàn tất.
Tiếp theo, ta sẽ tiến hành thử Restore một database vào Node PRIMARY xem dữ liệu có được đồng bộ lên Node SECONDARY hay không.
Restore vào database có tên “test” trên Node PRIMARY bằng câu lệnh mongorestore. Mọi người có thể đọc thêm về cách Backup và Restore Mongo Database tại bài viết sau.
mongorestore -d test /root/db-for-learning-nosql/example-db-mongodb/dump/
Tiến hành truy cập vào MongoDB trên Node PRIMARY và show list database xem database test có tồn tại hay không.
mongo --host demo-mongo-repli/master:27017 --username mongo-admin --password mongo-pass --authenticationDatabase admin
Như vậy, trên Node PRIMARY đã có database “test”, tiến hành truy cập vào Node SECONDARY để kiểm tra.
mongo --host slave:27017 --username mongo-admin --password mongo-pass --authenticationDatabase admin
Ta có thể thấy trên Node SECONDARY đã xuất hiện database “test”.
Bài viết của mình về cấu hình MongoDB Replica Set dựa theo kinh nghiệm và tìm hiểu tới đây là hết, cảm ơn mọi người đã theo dõi.
Tham Khảo.
https://sysadmins.co.za/setup-a-3-node-mongodb-replica-set-on-ubuntu/