Sao chép MongoDB trên CentOS 7

theanh

Administrator
Nhân viên
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
  • Ba máy chủ được cài đặt CentOS 7
10.0.15.21 mongo1
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
Chỉnh sửa tệp hosts bằng vim.
Mã:
vim /etc/hosts
Dán cấu hình hosts bên dưới:
Mã:
10.0.15.21 mongo1
10.0.15.22 mongo2
10.0.15.23 mongo3
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.
Mã:
vim /etc/sysconfig/selinux
Thay đổi giá trị 'enforcing' thành 'disabled'.
Mã:
SELINUX=disabled
Lưu và thoát, sau đó khởi động lại máy chủ.
Mã:
khởi động lại
Kiểm tra trạng thái SELinux bằng lệnh.
Mã:
getenforce
Đảm bảo bạn nhận được 'Disabled' là kết quả.

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
Tiếp theo, cài đặt gói themongodb-org bằng lệnh yum.
Mã:
sudo yum -y install mongodb-org
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.

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
Khởi động firewalld và cho phép nó khởi động khi khởi động.
Mã:
systemctl start firewalld
systemctl enable firewalld
Tiếp theo, mở cổng ssh và cổng mặc định của MongoDB là 27017.
Mã:
firewall-cmd --permanent --add-port=22/tcp
firewall-cmd --permanent --add-port=27017/tcp
Tải lại firewalld để áp dụng các thay đổi.
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
Trong phần 'net' dòng 27, hãy bình luận 'bindIP'.
Mã:
net:
 port: 27017
 # bindIP: 127.0.0.1
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'.
Mã:
replication:
 replSetName: "myreplica01"
Lưu tệp và thoát vim.

Khởi động lại MongoDB trên tất cả các nút.
Mã:
systemctl restart mongod
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.
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
Khởi tạo tập bản sao từ máy chủ mongo1 bằng truy vấn bên dưới.
Mã:
rs.initiate()
Đả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.
Mã:
rs.add("mongo2")
rs.add("mongo3")
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ã:
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
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.
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
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.
Mã:
rs.slaveOk()
show dbs
use lemp
show collections
db.stack.find()
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.

Tham chiếu​

 
Back
Bên trên