MongoDB là cơ sở dữ liệu NoSQL cấp doanh nghiệp cung cấp hiệu suất cao, tính khả dụng cao và khả năng mở rộng tự động. Trên cơ sở dữ liệu NoSQL, do đó bạn không thể sử dụng SQL (Ngôn ngữ truy vấn có cấu trúc) để chèn và truy xuất dữ liệu và nó không lưu trữ dữ liệu trong các bảng như MySQL hoặc Postgres. Thay vào đó, dữ liệu được lưu trữ trong cấu trúc "tài liệu" ở định dạng JSON (trong MongoDB gọi là BSON). MongoDB lần đầu tiên được giới thiệu vào năm 2009 và hiện đang được phát triển bởi công ty MongoDB Inc.
Trong hướng dẫn này, tôi sẽ hướng dẫn bạn từng bước xây dựng một bộ bản sao trong MongoDB. Chúng tôi sẽ sử dụng 3 nút máy chủ được cài đặt CentOS 7, sau đó cài đặt và cấu hình MongoDB.
Điều kiện tiên quyết
10.0.15.22 mongo2
10.0.15.23 mongo3
Kết nối đến tất cả các nút máy chủ bằng ssh.
Chỉnh sửa tệp hosts bằng vim.
Dán cấu hình hosts bên dưới:
Lưu tệp và thoát.
Tiếp theo, chúng ta sẽ vô hiệu hóa SELinux bằng cách chỉnh sửa tệp cấu hình bằng vim.
Thay đổi giá trị 'enforcing' thành 'disabled'.
Lưu và thoát, sau đó khởi động lại máy chủ.
Kiểm tra trạng thái SELinux bằng lệnh.
Đảm bảo bạn nhận được 'Disabled' là kết quả.
Chạy lệnh bên dưới để thêm kho lưu trữ.
Tiếp theo, cài đặt gói themongodb-org bằng lệnh yum.
MongoDB đã được cài đặt trên tất cả các nút CentOS 7.
Lưu ý:
Nếu bạn muốn có hướng dẫn đầy đủ về 'Cài đặt MongoDB', bạn sẽ thấy liên kết này.
Cài đặt Firewalld bằng lệnh yum.
Khởi động firewalld và cho phép nó khởi động khi khởi động.
Tiếp theo, mở cổng ssh và cổng mặc định của MongoDB là 27017.
Tải lại firewalld để áp dụng các thay đổi.
Bản sao trong mongodb bao gồm một số phiên bản máy chủ MongoDB chạy quy trình mongod, chỉ có một phiên bản chạy dưới dạng 'CHÍNH', tất cả các phiên bản khác là 'PHỤ'. Dữ liệu chỉ được ghi vào phiên bản 'CHÍNH', sau đó các tập dữ liệu được sao chép vào tất cả các phiên bản 'THỨ CẤP'.
Trong bước này, chúng ta sẽ chuẩn bị tất cả các nút máy chủ để triển khai các tập bản sao trong MongoDB.
Chỉnh sửa tệp cấu hình MongoDBmongod.conf bằng vim.
Trong phần 'net' dòng 27, hãy bình luận 'bindIP'.
Tiếp theo, bỏ bình luận dòng 36 của bản sao và đặt tên bản sao thành 'myreplica01'.
Lưu tệp và thoát vim.
Khởi động lại MongoDB trên tất cả các nút.
Bây giờ hãy kiểm tra mongodb và đảm bảo rằng nó đang chạy trên máy chủ ipaddress, không phải localhost ipaddress.
Đăng nhập vào máy chủ mongo1 và khởi động shell mongo.
Khởi tạo tập bản sao từ máy chủ mongo1 bằng truy vấn bên dưới.
Đảm bảo giá trị 'ok' là 1.
Bây giờ hãy thêm các nút 'mongo2' và 'mongo3' vào tập bản sao.
Bạn sẽ thấy kết quả bên dưới và đảm bảo không có lỗi.
Tiếp theo, kiểm tra trạng thái của tập bản sao bằng truy vấn rs bên dưới.
Một truy vấn khác để kiểm tra trạng thái là:
Trong bước này, chúng ta sẽ thử viết hoặc tạo cơ sở dữ liệu mới trên nút 'PRIMARY' 'mongo1', sau đó kiểm tra xem bản sao có hoạt động không bằng cách kiểm tra cơ sở dữ liệu trên các nút 'SECONDARY' 'mongo2' và 'mongo3'.
Đăng nhập vào máy chủ 'mongo1' và mở shell mongo.
Bây giờ hãy tạo một cơ sở dữ liệu mới 'lemp' và bộ sưu tập 'stack' mới cho cơ sở dữ liệu.
Tiếp theo, hãy đến nút 'THỨ HAI' 'mongo2' và mở shell mongo.
Cho phép đọc từ nút 'THỨ HAI' bằng truy vấn 'rs.slaveOk()', sau đó kiểm tra xem cơ sở dữ liệu 'lemp' có tồn tại trên các nút 'THỨ HAI' hay không.
Nếu không có lỗi, bạn sẽ thấy kết quả bên dưới:
Cơ sở dữ liệu từ nút 'PRIMARY' đã được sao chép sang các nút 'SECONDARY', cơ sở dữ liệu 'lemp' từ phiên bản 'mongo1' đã được sao chép thành công sang các phiên bản 'mongo2' và 'mongo3'.
Một Bộ bản sao MongoDB đã được tạo thành công.
Trong hướng dẫn này, tôi sẽ hướng dẫn bạn từng bước xây dựng một bộ bản sao trong MongoDB. Chúng tôi sẽ sử dụng 3 nút máy chủ được cài đặt CentOS 7, sau đó cài đặt và cấu hình MongoDB.
Điều kiện tiên quyết
- Ba máy chủ được cài đặt CentOS 7
10.0.15.22 mongo2
10.0.15.23 mongo3
- Quyền root
Bước 1 - Chuẩn bị máy chủ
Trong hướng dẫn này, tôi sẽ tắt SELinux cho MongoDB. Chúng ta cần chỉnh sửa tệp cấu hình SELinux và thay đổi giá trị 'enforcing' thành disabled.Kết nối đến tất cả các nút máy chủ bằng ssh.
Mã:
ssh root@mongo1
ssh root@mongo2
ssh root@mongo3
Mã:
vim /etc/hosts
Mã:
10.0.15.21 mongo1
10.0.15.22 mongo2
10.0.15.23 mongo3
Tiếp theo, chúng ta sẽ vô hiệu hóa SELinux bằng cách chỉnh sửa tệp cấu hình bằng vim.
Mã:
vim /etc/sysconfig/selinux
Mã:
SELINUX=disabled
Mã:
khởi động lại
Mã:
getenforce
Bước 2 - Cài đặt MongoDB trên tất cả các nút
Trong bước này, chúng ta sẽ cài đặt MongoDB từ kho lưu trữ chính thức. Bước đầu tiên là thêm kho lưu trữ MongoDB 3.4 mới vào thư mục '/etc/yum.repos.d/'.Chạy lệnh bên dưới để thêm kho lưu trữ.
Mã:
cat /etc/yum.repos.d/mongodb.repo
[mongodb-org-3.4]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.4/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.4.asc
EOF
Mã:
sudo yum -y install mongodb-org
Lưu ý:
Nếu bạn muốn có hướng dẫn đầy đủ về 'Cài đặt MongoDB', bạn sẽ thấy liên kết này.
Bước 3 - Cấu hình Firewalld
Ở bước đầu tiên, chúng ta đã vô hiệu hóa SELinux. Vì lý do bảo mật, bây giờ chúng ta sẽ bật firewalld trên tất cả các nút và chỉ mở các cổng được MongoDB và SSH sử dụng.Cài đặt Firewalld bằng lệnh yum.
Mã:
yum -y install firewalld
Mã:
systemctl start firewalld
systemctl enable firewalld
Mã:
firewall-cmd --permanent --add-port=22/tcp
firewall-cmd --permanent --add-port=27017/tcp
Mã:
firewall-cmd --reload
Bước 4 - Cấu hình MongoDB Replica Set
Bộ bản sao là một nhóm các quy trình mongod trong MongoDB duy trì cùng dữ liệu và thông tin. Bộ bản sao cung cấp khả năng sẵn sàng cao và khả năng chịu lỗi cho các triển khai sản xuất của cơ sở dữ liệu.Bản sao trong mongodb bao gồm một số phiên bản máy chủ MongoDB chạy quy trình mongod, chỉ có một phiên bản chạy dưới dạng 'CHÍNH', tất cả các phiên bản khác là 'PHỤ'. Dữ liệu chỉ được ghi vào phiên bản 'CHÍNH', sau đó các tập dữ liệu được sao chép vào tất cả các phiên bản 'THỨ CẤP'.
Trong bước này, chúng ta sẽ chuẩn bị tất cả các nút máy chủ để triển khai các tập bản sao trong MongoDB.
Chỉnh sửa tệp cấu hình MongoDBmongod.conf bằng vim.
Mã:
vim /etc/mongod.conf
Mã:
net:
port: 27017
# bindIP: 127.0.0.1
Mã:
replication:
replSetName: "myreplica01"
Khởi động lại MongoDB trên tất cả các nút.
Mã:
systemctl restart mongod
Mã:
netstat -plntu
Bước 5 - Khởi tạo bộ bản sao MongoDB
Ở bước này, chúng ta sẽ tạo bộ bản sao. Chúng tôi sẽ sử dụng máy chủ 'mongo1' làm nút 'CHÍNH' và 'mongo2' và 'mongo3' làm nút 'PHỤ'.Đăng nhập vào máy chủ mongo1 và khởi động shell mongo.
Mã:
ssh root@mongo1
mongo
Mã:
rs.initiate()
Bây giờ hãy thêm các nút 'mongo2' và 'mongo3' vào tập bản sao.
Mã:
rs.add("mongo2")
rs.add("mongo3")
Tiếp theo, kiểm tra trạng thái của tập bản sao bằng truy vấn rs bên dưới.
Mã:
rs.status()
Một truy vấn khác để kiểm tra trạng thái là:
Mã:
rs.isMaster()
Bước 6 - Kiểm tra bản sao
Kiểm tra bản sao tập dữ liệu từ phiên bản 'PRIMARY' 'mongo1' đến các nút 'SECONDARY' 'mongo2' và 'mongo3'.Trong bước này, chúng ta sẽ thử viết hoặc tạo cơ sở dữ liệu mới trên nút 'PRIMARY' 'mongo1', sau đó kiểm tra xem bản sao có hoạt động không bằng cách kiểm tra cơ sở dữ liệu trên các nút 'SECONDARY' 'mongo2' và 'mongo3'.
Đăng nhập vào máy chủ 'mongo1' và mở shell mongo.
Mã:
ssh root@mongo1
mongo
Mã:
sử dụng lemp
db.stack.save(
{
"desc": "LEMP Stack",
"apps": ["Linux", "Nginx", "MySQL", "PHP"],
})
Tiếp theo, hãy đến nút 'THỨ HAI' 'mongo2' và mở shell mongo.
Mã:
ssh root@mongo2
mongo
Mã:
rs.slaveOk()
show dbs
use lemp
show collections
db.stack.find()
Cơ sở dữ liệu từ nút 'PRIMARY' đã được sao chép sang các nút 'SECONDARY', cơ sở dữ liệu 'lemp' từ phiên bản 'mongo1' đã được sao chép thành công sang các phiên bản 'mongo2' và 'mongo3'.
Một Bộ bản sao MongoDB đã được tạo thành công.