Chào bạn, trong thế giới dữ liệu ngày càng phát triển, việc lựa chọn một hệ quản trị cơ sở dữ liệu phù hợp là yếu tố quyết định đến sự thành công của một dự án. MongoDB nổi lên như một giải pháp hàng đầu trong lĩnh vực NoSQL, mang đến sự linh hoạt và khả năng mở rộng vượt trội. Vậy MongoDB là gì? Đơn giản, đây là một hệ quản trị cơ sở dữ liệu hướng tài liệu (document-oriented), lưu trữ dữ liệu dưới dạng các tài liệu JSON-like thay vì các bảng và hàng như cơ sở dữ liệu quan hệ (SQL) truyền thống. Sự khác biệt này cho phép MongoDB xử lý dữ liệu phi cấu trúc một cách dễ dàng, lý tưởng cho các ứng dụng hiện đại.
Trong quản trị hệ thống, MongoDB đóng vai trò cực kỳ quan trọng, đặc biệt với các hệ thống yêu cầu xử lý Big Data, ứng dụng thời gian thực hay Internet of Things (IoT). Khả năng mở rộng theo chiều ngang (horizontal scaling) giúp các quản trị viên dễ dàng tăng cường hiệu suất hệ thống chỉ bằng cách thêm vào các máy chủ mới. Việc cài đặt và cấu hình MongoDB đúng cách ngay từ đầu là nền tảng vững chắc để đảm bảo hệ thống vận hành ổn định và an toàn. Trong bài viết này, AZWEB sẽ hướng dẫn bạn chi tiết từng bước cài đặt MongoDB trên CentOS là gì 7, từ khâu chuẩn bị đến vận hành và khắc phục sự cố.
Yêu cầu hệ thống và chuẩn bị môi trường CentOS 7
Trước khi bắt đầu quá trình cài đặt, việc chuẩn bị một môi trường đạt chuẩn là bước không thể bỏ qua. Điều này đảm bảo MongoDB có thể hoạt động mượt mà và tránh được những lỗi không đáng có trong tương lai. Hãy cùng AZWEB kiểm tra các yêu cầu cần thiết nhé.
Yêu cầu phần cứng và phần mềm tối thiểu
Để MongoDB vận hành ổn định, hệ thống của bạn cần đáp ứng một số yêu cầu cơ bản về tài nguyên. Mặc dù MongoDB có thể chạy trên các cấu hình khiêm tốn, nhưng để đảm bảo hiệu suất cho các tác vụ thực tế, bạn nên chuẩn bị:
- CPU: Tối thiểu 1 CPU core, nhưng khuyến nghị từ 2 cores trở lên cho môi trường production.
- RAM: Tối thiểu 1GB RAM. Tuy nhiên, MongoDB sẽ hoạt động hiệu quả hơn rất nhiều với 2GB RAM trở lên, vì nó sử dụng RAM để cache dữ liệu, giúp tăng tốc độ truy vấn.
- Dung lượng ổ cứng: Ít nhất 10GB dung lượng trống để chứa hệ điều hành, MongoDB và dữ liệu ban đầu. Bạn cần dự trù không gian lưu trữ lớn hơn tùy thuộc vào khối lượng dữ liệu ứng dụng của bạn sẽ tạo ra.
- Hệ điều hành: Bài viết này tập trung vào CentOS 7 (phiên bản 64-bit). MongoDB 4.4 là phiên bản cuối cùng hỗ trợ chính thức CentOS 7, do đó chúng ta sẽ cài đặt phiên bản này để đảm bảo tính tương thích và ổn định.

Cập nhật hệ thống và kiểm tra môi trường
Sau khi đã đảm bảo cấu hình phần cứng, bước tiếp theo là chuẩn bị phần mềm và môi trường hệ điều hành. Việc này giúp loại bỏ các lỗ hổng bảo mật cũ và đảm bảo các gói phần mềm trên hệ thống là mới nhất.
Đầu tiên, hãy mở terminal và đăng nhập vào máy chủ CentOS 7 của bạn. Sử dụng lệnh sau để cập nhật toàn bộ hệ thống. Bạn cần có quyền sudo để thực hiện thao tác này.
sudo yum update -y
Quá trình này có thể mất vài phút tùy thuộc vào số lượng gói cần cập nhật. Sau khi hoàn tất, hãy kiểm tra lại kết nối mạng để đảm bảo máy chủ có thể truy cập Internet và tải về các gói cài đặt MongoDB. Một lệnh ping đơn giản đến một trang web uy tín là đủ.
ping google.com
Cuối cùng, hãy chắc chắn rằng tài khoản bạn đang sử dụng có quyền sudo. Hầu hết các lệnh cài đặt và cấu hình hệ thống đều yêu cầu quyền quản trị cao nhất để thực thi. Nếu bạn có thể chạy lệnh sudo yum update thành công, nghĩa là tài khoản của bạn đã đủ quyền.
Thêm kho lưu trữ MongoDB chính thức vào CentOS 7
Để cài đặt MongoDB một cách an toàn và đảm bảo nhận được các bản cập nhật chính thức, phương pháp tốt nhất là thêm kho lưu trữ (repository) của MongoDB vào hệ thống quản lý gói yum của CentOS. Việc này giúp bạn cài đặt phiên bản ổn định và được xác thực trực tiếp từ nhà phát triển.
Thêm MongoDB Repository
CentOS không tích hợp sẵn kho lưu trữ của MongoDB. Do đó, chúng ta cần tự tạo một file cấu hình repository. Hãy sử dụng một trình soạn thảo văn bản như vi hoặc nano để tạo file mới tại đường dẫn /etc/yum.repos.d/mongodb-org-4.4.repo.
sudo vi /etc/yum.repos.d/mongodb-org-4.4.repo
Bên trong file này, bạn hãy dán nội dung sau vào. Cấu hình này sẽ chỉ cho yum biết nơi để tìm và tải về các gói cài đặt cho MongoDB phiên bản 4.4.
[mongodb-org-4.4]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/7/mongodb-org/4.4/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.4.asc
Hãy cùng phân tích các dòng lệnh trên:
[mongodb-org-4.4]: Tên định danh cho repository.name: Tên mô tả đầy đủ.baseurl: Đường dẫn URL đến nơi chứa các gói cài đặt.gpgcheck=1: Bật tính năng kiểm tra chữ ký GPG để xác thực gói tin.enabled=1: Kích hoạt repository này.gpgkey: Đường dẫn đến khóa GPG công khai để xác thực chữ ký.
Sau khi dán nội dung, hãy lưu file và thoát khỏi trình soạn thảo.

Cập nhật cache repository mới
Sau khi đã thêm file repository mới, bạn cần yêu cầu yum cập nhật lại bộ nhớ đệm (cache) của nó. Thao tác này sẽ giúp yum nhận diện được kho lưu trữ MongoDB mà chúng ta vừa thêm vào.
Chạy lệnh sau để xóa cache cũ và xây dựng lại cache mới:
sudo yum clean all
sudo yum makecache
Bây giờ, bạn có thể kiểm tra xem repository đã được thêm thành công hay chưa bằng lệnh:
yum repolist | grep mongodb
Nếu bạn thấy một dòng output chứa “MongoDB Repository”, xin chúc mừng, bạn đã cấu hình kho lưu trữ thành công và sẵn sàng cho bước cài đặt.
Cài đặt gói MongoDB từ kho lưu trữ
Khi kho lưu trữ đã được thiết lập và hệ thống đã nhận diện, việc cài đặt MongoDB trở nên vô cùng đơn giản. Chúng ta sẽ sử dụng trình quản lý gói yum để tự động tải về và cài đặt tất cả các thành phần cần thiết.
Lệnh cài đặt MongoDB
Gói mongodb-org là một meta-package, nó sẽ tự động cài đặt các thành phần cốt lõi của MongoDB, bao gồm:
mongodb-org-server: Chứamongoddaemon, là tiến trình chính của cơ sở dữ liệu.mongodb-org-mongos: Chứamongosdaemon, dùng cho các cụm sharded cluster.mongodb-org-shell: Chứamongoshell, giao diện dòng lệnh để tương tác với MongoDB.mongodb-org-tools: Chứa các công cụ tiện ích nhưmongodump,mongorestore,mongoimport,mongoexport.
Để cài đặt, bạn chỉ cần chạy một lệnh duy nhất:
sudo yum install -y mongodb-org
Cờ -y sẽ tự động trả lời “yes” cho tất cả các câu hỏi xác nhận, giúp quá trình cài đặt diễn ra liền mạch.

Sau khi quá trình cài đặt hoàn tất, bạn có thể kiểm tra phiên bản MongoDB đã được cài đặt để xác nhận mọi thứ đã đúng như mong đợi.
mongod --version
Lệnh này sẽ trả về thông tin chi tiết về phiên bản, bao gồm cả số build và phiên bản OpenSSL được sử dụng.
Xác minh việc cài đặt thành công
Mặc dù đã cài đặt xong, dịch vụ MongoDB (mongod) chưa tự động khởi chạy. Chúng ta cần khởi động nó thủ công lần đầu tiên và kiểm tra trạng thái. Sử dụng lệnh systemctl để khởi động dịch vụ:
sudo systemctl start mongod
Tiếp theo, kiểm tra trạng thái của dịch vụ để đảm bảo nó đang chạy mà không gặp lỗi:
sudo systemctl status mongod
Nếu bạn thấy dòng Active: active (running) với màu xanh lá, điều đó có nghĩa là MongoDB đã khởi động thành công. Bạn cũng có thể thử kết nối vào mongo shell để tương tác với cơ sở dữ liệu.
mongo
Nếu bạn vào được dấu nhắc lệnh của MongoDB (thường là >), bạn đã cài đặt và khởi động thành công MongoDB trên CentOS 7. Chúc mừng bạn!
Cấu hình dịch vụ MongoDB để tự động khởi động và chạy ổn định
Việc cài đặt thành công chỉ là bước khởi đầu. Để MongoDB hoạt động như một dịch vụ đáng tin cậy trong môi trường production, bạn cần cấu hình cho nó tự động khởi động cùng hệ thống và tinh chỉnh một vài thông số quan trọng để tối ưu hiệu suất và bảo mật.
Thiết lập khởi động cùng hệ thống
Mặc định, sau khi cài đặt, dịch vụ mongod sẽ không tự động khởi chạy lại nếu máy chủ của bạn khởi động lại. Điều này có thể gây gián đoạn cho ứng dụng của bạn. Để khắc phục, chúng ta cần kích hoạt (enable) dịch vụ này.
Sử dụng lệnh systemctl enable để thiết lập mongod khởi động cùng hệ điều hành:
sudo systemctl enable mongod
Lệnh này sẽ tạo một symbolic link cần thiết trong thư mục quản lý dịch vụ của systemd. Để kiểm tra lại, bạn có thể chạy lệnh:
sudo systemctl is-enabled mongod
Nếu kết quả trả về là enabled, bạn đã cấu hình thành công. Từ bây giờ, mỗi khi máy chủ CentOS 7 reboot, dịch vụ MongoDB sẽ tự động được khởi chạy.

Cấu hình file mongod.conf cơ bản
File cấu hình chính của MongoDB nằm tại /etc/mongod.conf. Đây là nơi bạn có thể tùy chỉnh mọi khía cạnh hoạt động của cơ sở dữ liệu, từ cổng mạng, đường dẫn lưu trữ đến các thiết lập bảo mật. Hãy mở file này bằng một trình soạn thảo:
sudo vi /etc/mongod.conf
Dưới đây là một vài cấu hình quan trọng bạn cần chú ý:
net.port: Cổng mạng mà MongoDB sẽ lắng nghe các kết nối. Mặc định là27017. Bạn có thể thay đổi cổng này để tăng thêm một lớp bảo mật.net.bindIp: Đây là một thiết lập bảo mật cực kỳ quan trọng. Mặc định, MongoDB chỉ cho phép kết nối từ localhost (127.0.0.1). Nếu bạn muốn cho phép kết nối từ các máy chủ khác trong cùng mạng, bạn cần thêm địa chỉ IP của máy chủ MongoDB vào đây. Ví dụ:bindIp: 127.0.0.1,192.168.1.100. Thận trọng: Không bao giờ sử dụng0.0.0.0(cho phép kết nối từ mọi nơi) trong môi trường production nếu chưa có tường lửa và xác thực mạnh mẽ.storage.dbPath: Đường dẫn đến thư mục chứa dữ liệu của bạn. Mặc định là/var/lib/mongo.systemLog.path: Đường dẫn đến file log. Mặc định là/var/log/mongodb/mongod.log. Việc theo dõi log là rất cần thiết để chẩn đoán sự cố.
Sau khi thay đổi bất kỳ cấu hình nào trong file mongod.conf, bạn cần khởi động lại dịch vụ MongoDB để các thay đổi có hiệu lực.
sudo systemctl restart mongod
Kiểm tra và xác thực hoạt động của MongoDB trên CentOS 7
Sau khi đã cài đặt và cấu hình, bước cuối cùng là kiểm tra toàn diện để chắc chắn rằng MongoDB không chỉ đang chạy mà còn hoạt động đúng như mong đợi. Việc xác thực này giúp bạn tự tin triển khai ứng dụng của mình trên nền tảng cơ sở dữ liệu vừa thiết lập.
Kiểm tra trạng thái dịch vụ
Lệnh systemctl status mongod là công cụ chẩn đoán đầu tiên và quan trọng nhất của bạn. Hãy chạy lại lệnh này một lần nữa.
sudo systemctl status mongod
Kết quả trả về không chỉ cho bạn biết dịch vụ có active (running) hay không, mà còn cung cấp nhiều thông tin hữu ích khác:
- PID chính (Main PID): Số định danh tiến trình của
mongod. - Memory/CPU usage: Mức độ sử dụng tài nguyên hệ thống.
- Log gần nhất: Vài dòng log cuối cùng, giúp bạn nhanh chóng phát hiện các cảnh báo hoặc lỗi ngay khi khởi động.
Nếu dịch vụ không chạy được, phần log này thường sẽ chỉ ra nguyên nhân, ví dụ như lỗi cấu hình trong file /etc/mongod.conf hoặc vấn đề về quyền truy cập thư mục dữ liệu.

Thực hiện truy vấn thử qua mongo shell
Cách tốt nhất để xác nhận MongoDB hoạt động là tương tác trực tiếp với nó. Hãy kết nối vào mongo shell:
mongo
Bây giờ, hãy thực hiện một vài thao tác cơ bản để kiểm tra:
- Tạo hoặc chuyển sang một database mới:
use azweb_testdb
Lệnh này sẽ tạo ra một cơ sở dữ liệu tên là azweb_testdb nếu nó chưa tồn tại và chuyển ngữ cảnh làm việc sang đó.
- Tạo một collection và chèn dữ liệu mẫu:
Collectiontrong MongoDB tương tự nhưtabletrong SQL. Hãy chèn một tài liệu (document) vào collectionusers.
db.users.insertOne({ name: "AZWEB User", role: "Admin", projects: ["Website Design", "Hosting"] })
Nếu lệnh thành công, MongoDB sẽ trả về một đối tượng JSON xác nhận việc chèn dữ liệu.
- Kiểm tra và xác nhận dữ liệu:
db.users.find({ name: "AZWEB User" }).pretty()
Lệnh find() sẽ tìm kiếm các tài liệu khớp với điều kiện, và .pretty() giúp định dạng kết quả JSON cho dễ đọc. Nếu bạn thấy tài liệu mình vừa chèn được hiển thị, điều này xác nhận rằng MongoDB đã hoạt động hoàn hảo từ khâu cài đặt, cấu hình cho đến ghi và đọc dữ liệu.
Các mẹo vận hành và bảo trì MongoDB hiệu quả
Việc cài đặt MongoDB chỉ là điểm khởi đầu. Để hệ thống dữ liệu của bạn luôn an toàn, ổn định và hiệu quả, công tác vận hành và bảo trì định kỳ là vô cùng quan trọng. Dưới đây là những mẹo hữu ích từ AZWEB giúp bạn quản lý MongoDB như một chuyên gia.

- Backup dữ liệu định kỳ: Đây là nhiệm vụ tối quan trọng. Sử dụng công cụ
mongodumpđể tạo bản sao lưu toàn bộ hoặc một phần cơ sở dữ liệu. Lệnhmongorestoresẽ giúp bạn khôi phục dữ liệu từ bản sao lưu đó. Hãy tự động hóa quy trình này bằng cron job để đảm bảo không bỏ lỡ.
# Lệnh backup một database
mongodump --db your_database_name --out /path/to/backup/directory
# Lệnh phục hồi
mongorestore --db your_database_name /path/to/backup/directory/your_database_name
- Giám sát tài nguyên và log hoạt động: Luôn để mắt đến việc sử dụng CPU, RAM và dung lượng ổ cứng của máy chủ MongoDB. Các công cụ như
top,htop,dflà bạn đồng hành không thể thiếu. Ngoài ra, thường xuyên kiểm tra file log của MongoDB (/var/log/mongodb/mongod.log) để phát hiện sớm các truy vấn chậm, lỗi kết nối hoặc các cảnh báo bất thường. - Cập nhật phiên bản MongoDB an toàn: Các phiên bản mới thường đi kèm với các bản vá bảo mật và cải tiến hiệu năng. Tuy nhiên, đừng vội vàng nâng cấp trên môi trường production. Luôn đọc kỹ ghi chú phát hành (release notes), thực hiện nâng cấp trên môi trường thử nghiệm (staging) trước, và đảm bảo đã có một bản backup đầy đủ trước khi tiến hành.
- Lập kế hoạch bảo trì và kiểm tra định kỳ: Đặt ra một lịch trình định kỳ (ví dụ: hàng tháng) để kiểm tra “sức khỏe” của MongoDB. Các công việc có thể bao gồm kiểm tra sự phân mảnh của chỉ mục (index fragmentation), tối ưu hóa các chỉ mục không hiệu quả và dọn dẹp dữ liệu cũ không còn cần thiết.
Những vấn đề thường gặp và cách khắc phục
Trong quá trình cài đặt và vận hành MongoDB, bạn có thể sẽ gặp phải một số sự cố phổ biến. Đừng lo lắng, hầu hết chúng đều có nguyên nhân rõ ràng và cách khắc phục tương đối đơn giản.
Lỗi không khởi động được dịch vụ MongoDB
Đây là một trong những lỗi phổ biến nhất sau khi cài đặt hoặc thay đổi cấu hình. Khi bạn chạy sudo systemctl start mongod và nó thất bại, hãy kiểm tra ngay log hệ thống.
sudo journalctl -u mongod
Các nguyên nhân phổ biến bao gồm:
- Sai quyền trên thư mục dữ liệu: Thư mục
/var/lib/mongovà/var/log/mongodbphải thuộc sở hữu của người dùngmongod. Nếu không, hãy sửa lại bằng lệnh:sudo chown -R mongod:mongod /var/lib/mongo /var/log/mongodb. - Lỗi cú pháp trong file cấu hình: Một dấu phẩy thừa hoặc một thiết lập sai trong
/etc/mongod.confcó thể khiến dịch vụ không khởi động được. Hãy kiểm tra kỹ file này. - Không đủ dung lượng ổ cứng: Nếu ổ đĩa chứa thư mục dữ liệu bị đầy, MongoDB sẽ không thể khởi động.
- SELinux chặn truy cập: Đôi khi, chính sách SELinux của CentOS có thể ngăn
mongodtruy cập vào các file và port cần thiết. Bạn có thể tạm thời đặt SELinux ở chế độ permisive để kiểm tra:sudo setenforce 0. Nếu dịch vụ khởi động được, bạn cần cấu hình lại chính sách SELinux cho phù hợp thay vì tắt nó hoàn toàn.

Kết nối MongoDB bị từ chối
Nếu ứng dụng của bạn không thể kết nối đến MongoDB, hãy kiểm tra theo các bước sau:
- Kiểm tra Firewall: Tường lửa của CentOS 7 có thể đang chặn cổng
27017. Bạn cần mở cổng này:
sudo firewall-cmd --zone=public --add-port=27017/tcp --permanent
sudo firewall-cmd --reload
- Kiểm tra cấu hình
bindIp: Như đã đề cập, mặc định MongoDB chỉ lắng nghe kết nối từ127.0.0.1. Nếu bạn đang cố gắng kết nối từ một máy chủ khác, hãy chắc chắn rằng địa chỉ IP của máy chủ MongoDB đã được thêm vàonet.bindIptrong file/etc/mongod.conf. - Kiểm tra dịch vụ có đang chạy không: Đảm bảo rằng dịch vụ
mongodthực sự đang hoạt động bằng lệnhsudo systemctl status mongod. - Kiểm tra kết nối mạng cơ bản: Sử dụng
pinghoặctelnettừ máy khách đến máy chủ MongoDB để xác nhận không có vấn đề về kết nối mạng ở tầng thấp hơn.telnet your_mongodb_server_ip 27017.
Best Practices
Để xây dựng một hệ thống MongoDB mạnh mẽ, an toàn và dễ bảo trì, việc tuân thủ các thực hành tốt nhất (Best Practices) là điều cần thiết. Đây là những nguyên tắc đã được cộng đồng đúc kết qua nhiều năm kinh nghiệm thực chiến.
- Luôn chạy bản ổn định: Tránh sử dụng các phiên bản beta hoặc release candidate (RC) cho môi trường production. Hãy ưu tiên các phiên bản ổn định (stable release) mới nhất để nhận được sự hỗ trợ tốt nhất và tránh các lỗi không lường trước.
- Sử dụng user riêng, không dùng root: Dịch vụ MongoDB nên được chạy dưới một người dùng hệ thống riêng biệt (mặc định là
mongod) với quyền hạn giới hạn. Tuyệt đối không chạymongodvới quyềnrootvì điều này tạo ra một rủi ro bảo mật nghiêm trọng. - Quản lý quyền truy cập chặt chẽ: Kích hoạt tính năng xác thực (Authentication) trong MongoDB. Tạo các tài khoản người dùng riêng biệt cho từng ứng dụng và cấp cho chúng những quyền hạn tối thiểu cần thiết (Principle of Least Privilege). Đừng sử dụng chung một tài khoản quản trị cho mọi kết nối.
- Định kỳ backup và kiểm thử phục hồi: Việc backup là vô nghĩa nếu bạn không thể phục hồi từ nó. Hãy định kỳ thực hiện các bài kiểm tra phục hồi dữ liệu trên một môi trường riêng biệt để đảm bảo quy trình backup của bạn hoạt động chính xác.
- Không thay đổi cấu hình đột ngột: Mọi thay đổi về cấu hình, nâng cấp phiên bản hay thay đổi chỉ mục đều phải được thử nghiệm kỹ lưỡng trên môi trường staging trước khi áp dụng cho production. Điều này giúp bạn dự đoán được tác động và tránh gây gián đoạn dịch vụ.

Kết luận
Qua bài viết này, AZWEB đã cùng bạn đi qua một hành trình chi tiết để cài đặt và cấu hình MongoDB trên hệ điều hành CentOS 7. Chúng ta đã bắt đầu từ việc chuẩn bị môi trường, thêm kho lưu trữ chính thức, tiến hành cài đặt, cấu hình dịch vụ, cho đến việc xác thực hoạt động và tìm hiểu các mẹo vận hành quan trọng. Việc nắm vững các bước này là nền tảng vững chắc giúp bạn xây dựng và quản lý các ứng dụng dựa trên MongoDB một cách chuyên nghiệp.
Tóm lại, quá trình cài đặt thành công đòi hỏi sự cẩn thận trong từng bước, từ việc đảm bảo yêu cầu hệ thống đến việc tinh chỉnh file cấu hình cho phù hợp với nhu cầu. Tầm quan trọng của việc cấu hình đúng chuẩn, đặc biệt là các thiết lập về bảo mật như bindIp và kích hoạt xác thực, là không thể xem nhẹ. Vận hành một hệ thống MongoDB ổn định không chỉ dừng lại ở việc cài đặt, mà còn là một quá trình liên tục của việc giám sát, sao lưu và bảo trì.
Chúng tôi khuyến khích bạn không chỉ làm theo hướng dẫn mà hãy chủ động thử nghiệm, tìm hiểu sâu hơn về các tùy chọn cấu hình nâng cao. Tài liệu chính thức của MongoDB là một nguồn tài nguyên vô giá cho việc này. Đừng ngần ngại khám phá và áp dụng những kiến thức đã học vào các dự án thực tế của mình. Hãy theo dõi blog của AZWEB để đón đọc các bài viết chuyên sâu tiếp theo về tối ưu hóa hiệu suất và bảo mật nâng cao cho MongoDB nhé.