Cài đặt MongoDB 5.0 trên Ubuntu 20.04 - Install MongoDB 5.0 Ubuntu 20.04
MongoDB là một hệ quản trị cơ sở dữ liệu NoSQL phổ biến được sử dụng để phát triển ứng dụng động hiện đại. Nó sử dụng các tài liệu giống JSON và các lược đồ tùy chọn; các đối tượng dữ liệu được lưu trữ dưới dạng các tài liệu riêng lẻ trong một bộ sưu tập, khác với các hàng và cột được sử dụng trong các cơ sở dữ liệu quan hệ truyền thống. MongoDB có khả năng mở rộng, linh hoạt cao, cung cấp việc truy vấn và tạo chỉ mục dễ dàng cho các nhà phát triển. Do khả năng mở rộng theo chiều ngang và khả năng cân bằng tải, MongoDB đã cung cấp cho các nhà phát triển mức độ linh hoạt và khả năng mở rộng cao nhất. MongoDB Atlas là một dịch vụ cơ sở dữ liệu đám mây và là dịch vụ hàng đầu để phát triển ứng dụng hiện đại, có thể triển khai cơ sở dữ liệu quản lý đầy đủ trên Azure, AWS hoặc Google Cloud. Trong bài viết này, mình sẽ hướng dẫn bạn install và cấu hình MongoDB 5.0 trên Ubuntu 20.04.
MongoDB cung cấp cả phiên bản Community miễn phí để tải về và sử dụng, cũng như phiên bản Enterprise là một phần của gói đăng ký MongoDB Enterprise Advanced. Phiên bản Enterprise này bao gồm sự hỗ trợ toàn diện cho việc triển khai MongoDB của bạn và cung cấp các tính năng tập trung vào doanh nghiệp như hỗ trợ LDAP và Kerberos, mã hóa trên đĩa và kiểm toán.
Các tính năng và ưu điểm của cơ sở dữ liệu MongoDB
- Cung cấp khả năng mở rộng và linh hoạt cao; chuyển tiếp tự động và dự phòng dữ liệu
- Cung cấp một ngôn ngữ truy vấn biểu hiện dễ học và sử dụng
- Các truy vấn tùy ý cho phân tích thời gian thực
- Hỗ trợ mảng và đối tượng lồng nhau như giá trị và cho phép các lược đồ linh hoạt và động.
- Dễ dàng tạo các truy vấn cho phép sắp xếp và lọc, bất kể có bao nhiêu lồng nhau, và hỗ trợ tổng hợp, địa điểm địa lý, chuỗi thời gian, tìm kiếm đồ thị và nhiều tính năng khác.
- Hỗ trợ chia nhỏ cho phép phân chia tập dữ liệu lớn qua nhiều bộ sưu tập phân tán, từ đó dễ dàng truy vấn.
- Hỗ trợ nhiều bộ máy lưu trữ
Các tính năng mới của MongoDB 5.0
- MongoDB 5.0 là phiên bản mới nhất được phát hành vào ngày 13 tháng 7 năm 2021. Có một số sửa lỗi so với các phiên bản trước và cũng có một số tính năng bổ sung mà bạn có thể tìm thấy tất cả trong ghi chú phát hành chính thức của MongoDB 5.0. Một số tính năng bổ sung bao gồm:
- Giới thiệu các bộ sưu tập dòng thời gian, giúp lưu trữ các chuỗi đo lường theo khoảng thời gian một cách hiệu quả.
- Sự loại bỏ hoạt động map-reduce.
- Giới thiệu các toán tử tổng hợp mới như $dateAdd, $dateDiff, $dateSubtract, $getField, $rand và nhiều hơn nữa. Kiểm tra tài liệu tài liệu.
- Giới thiệu giai đoạn ống $setWindowFields cho phép thực hiện các hoạt động trên một phạm vi tài liệu cụ thể trong một bộ sưu tập, được gọi là cửa sổ.
- Thêm khả năng cấu hình bộ lọc kiểm toán trong thời gian chạy.
Install MongoDB 5.0 trên Ubuntu 20.04
Các bước dưới đây sẽ hướng dẫn chúng ta cách install MongoDB 5.0 trên Ubuntu 20.04 chi tiết.
Bước 1: Nhập khóa GPG của MongoDB
Cập nhật chỉ mục gói APT và cài đặt các gói tiện ích cơ bản cần thiết:
sudo apt update
sudo apt install wget curl gnupg2 software-properties-common apt-transport-https ca-certificates lsb-release
Đầu tiên, chúng ta cần nhập khóa GPG công khai của MongoDB như dưới đây:
curl -fsSL https://www.mongodb.org/static/pgp/server-5.0.asc|sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/mongodb.gpg
Bước 2: Thêm kho lưu trữ MongoDB trên Ubuntu 20.04
Để có thể cài đặt MongoDB bằng apt
, chúng ta cần thêm kho lưu trữ MongoDB.
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/5.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-5.0.list
Bước 3: Install MongoDB 5.0 trên Ubuntu 20.04
Chúng ta đã thêm khóa GPG và kho lưu trữ MongoDB, chúng ta tiến hành cài đặt MongoDB. Trước tiên, cập nhật các gói.
sudo apt update
sudo apt install mongodb-org
Chấp nhận lời nhắc cài đặt:
....
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
mongodb-database-tools mongodb-mongosh mongodb-org-database mongodb-org-database-tools-extra mongodb-org-mongos mongodb-org-server mongodb-org-shell mongodb-org-tools
The following NEW packages will be installed:
mongodb-database-tools mongodb-mongosh mongodb-org mongodb-org-database mongodb-org-database-tools-extra mongodb-org-mongos mongodb-org-server mongodb-org-shell mongodb-org-tools
0 upgraded, 9 newly installed, 0 to remove and 72 not upgraded.
Need to get 143 MB of archives.
After this operation, 461 MB of additional disk space will be used.
Do you want to continue? [Y/n] y
Nếu bạn muốn cài đặt một phiên bản cụ thể của MongoDB, bạn có thể bỏ qua phiên bản như sau:
sudo apt-get install -y mongodb-org=<version> mongodb-org-database=<version> mongodb-org-server=<version> mongodb-org-shell=<version> mongodb-org-mongos=<version> mongodb-org-tools=<version>
Bước 4: Khởi động MongoDB 5.0 trên Ubuntu 20.04
Sau khi quá trình cài đặt hoàn tất, tiến hành khởi động và kích hoạt MongoDB.
sudo systemctl restart mongod
Xác nhận rằng MongoDB đang chạy thực sự.
$ systemctl status mongod
● mongod.service - MongoDB Database Server
Loaded: loaded (/lib/systemd/system/mongod.service; disabled; vendor prese>
Active: active (running) since Tue 2021-08-24 15:42:58 UTC; 11s ago
Docs: https://docs.mongodb.org/manual
Main PID: 14497 (mongod)
Memory: 61.6M
CGroup: /system.slice/mongod.service
└─14497 /usr/bin/mongod --config /etc/mongod.conf
Aug 24 15:42:58 lorna-ubuntu20 systemd[1]: Started MongoDB Database Server.
Xác nhận phiên bản MongoDB.
$ mongod --version
db version v5.0.9
Build Info: {
"version": "5.0.9",
"gitVersion": "6f7dae919422dcd7f4892c10ff20cdc721ad00e6",
"openSSLVersion": "OpenSSL 1.1.1f 31 Mar 2020",
"modules": [],
"allocator": "tcmalloc",
"environment": {
"distmod": "ubuntu2004",
"distarch": "x86_64",
"target_arch": "x86_64"
}
}
Bạn có thể kích hoạt MongoDB tự động khởi động khi khởi động lại hệ thống:
$ sudo systemctl enable mongod
Created symlink /etc/systemd/system/multi-user.target.wants/mongod.service → /lib/systemd/system/mongod.service
Bước 5: Cấu hình MongoDB 5.0 trên Ubuntu
Tệp cấu hình cho MongoDB được đặt tại /etc/mongod.conf
. Ở đây, bạn sẽ tìm thấy các cấu hình cho đường dẫn db, đường dẫn nhật ký. Bạn luôn có thể thay đổi các thay đổi trong tệp này tùy theo nhu cầu cài đặt của bạn. Khởi động dịch vụ mongod mỗi khi bạn thay đổi tệp.
Kích hoạt xác thực mật khẩu MongoDB
Hãy kích hoạt xác thực mật khẩu mongodb để người dùng có thể đăng nhập bằng mật khẩu để đọc hoặc chỉnh sửa cơ sở dữ liệu. Bỏ dấu #Security
và thêm nội dung như sau.
security:
authorization: enabled
Sau đó, khởi động lại dịch vụ mongod.
sudo systemctl restart mongod
Kích hoạt truy cập từ xa MongoDB
Mặc định, MongoDB chỉ có thể truy cập cục bộ. Nếu bạn muốn có khả năng truy cập cơ sở dữ liệu từ xa, chúng ta sẽ thay đổi nhỏ trong tệp cấu hình để bao gồm địa chỉ IP máy chủ hoặc tên máy chủ MongoDB như dưới đây.
# network interfaces
net:
port: 27017
bindIp: 127.0.0.1,mongodb-server-ip
Lưu các thay đổi và khởi động lại dịch vụ mongod. Bạn cũng cần cho phép địa chỉ IP từ xa được tin cậy trên tường lửa nếu bạn đã bật tường lửa.
sudo ufw allow from trusted-server-ip to any port 27017
Bước 6: Tạo người dùng và cơ sở dữ liệu trong MongoDB
Truy cập MongoDB shell, chạy lệnh mongosh trên terminal như dưới đây.
$ mongosh
Current Mongosh Log ID: 6298e0a77a8138c811c6c8a0
Connecting to: mongodb://127.0.0.1:27017/?directConnection=true&serverSelectionTimeoutMS=2000&appName=mongosh+1.5.0
Using MongoDB: 5.0.9
Using Mongosh: 1.5.0
For mongosh info see: https://docs.mongodb.com/mongodb-shell/
..........
Để liệt kê các cơ sở dữ liệu hiện có.
> show dbs
admin 135 kB
config 111 kB
local 73.7 kB
Cách tạo người dùng và thêm vai trò trong MongoDB
Chúng ta có thể tạo người dùng trong MongoDB, gán cho họ vai trò quản trị viên và quyền truy cập tất cả cơ sở dữ liệu.
> db.createUser({
user: "testuser",
pwd: "TestUserPassword",
roles: [{role: "userAdminAnyDatabase" , db: "admin"}]
});
{ ok: 1 }
Để cho phép một người dùng có quyền truy cập vào một cơ sở dữ liệu cụ thể.
db.createUser({
user: "testuser2",
pwd: "TestUser2Password",
roles: [{role: "userAdmin" , db: "employees"}]
});
Để tạo một cơ sở dữ liệu mới trong MongoDB, chúng ta sử dụng lệnh use
. MongoDB không có lệnh tạo. Ví dụ, tạo một cơ sở dữ liệu mới có tên là 'test'.
> use employees
switched to db employees
Bạn cần thêm một số thông tin vào DB để nó được liệt kê khi bạn liệt kê các cơ sở dữ liệu.
db.Employees.insertOne({name: "hale" , age: 20 , department: "IT"})
{
acknowledged: true,
insertedId: ObjectId("61252c7492f10ccae358d787")
}
MongoDB insertOne và insertMany
Lưu ý rằng Collection.insert()
đã bị loại bỏ và bạn nên sử dụng insertOne
, insertMany
hoặc bulkWrite
.
Bây giờ khi bạn liệt kê cơ sở dữ liệu, cơ sở dữ liệu mới của bạn cũng nên được liệt kê.
> show dbs
admin 0.000GB
config 0.000GB
employees 0.000GB
local 0.000GB
Bước 7: Tinh chỉnh MongoDB
Khi bạn đã cài đặt MongoDB, quan trọng là đảm bảo hiệu suất của nó ở cấu hình tối ưu. Khi thông tin tăng lên, cài đặt MongoDB của chúng ta phải có khả năng xử lý và xử lý theo mong đợi. Việc mở rộng có thể xảy ra cả theo chiều ngang hoặc theo chiều dọc. Mở rộng theo chiều ngang có nghĩa là thêm các tài nguyên máy chủ như RAM và CPU, trong khi mở rộng theo chiều dọc là việc giới thiệu thêm máy chủ trong cài đặt của chúng ta.
Việc mở rộng theo chiều dọc, rất quan trọng trong hiệu suất tổng thể của mongodb, phụ thuộc vào một số yếu tố nhất định bao gồm: Sử dụng bộ nhớ, Số lượng kết nối đồng thời và Bộ nhớ đệm WiredTiger, cùng với một số yếu tố khác. Bộ nhớ là một yếu tố quan trọng khác có ảnh hưởng đến hiệu suất MongoDB. MongoDB sử dụng WiredTiger làm động cơ lưu trữ mặc định và do đó bảo tồn 50% của (bộ nhớ có sẵn -1) cho WiredTiger.
Ví dụ, một máy chủ có 8GB RAM sẽ có 0,5*(8-1) bộ nhớ được bảo tồn cho WiredTiger. Để kiểm tra thống kê việc sử dụng bộ nhớ đệm và xác định xem bạn có cần thực hiện thay đổi hay không, chạy lệnh dưới đây:
> db.serverStatus().wiredTiger.cache
{
'application threads page read from disk to cache count': 6,
'application threads page read from disk to cache time (usecs)': 46,
'application threads page write from cache to disk count': 184,
'application threads page write from cache to disk time (usecs)': 10501,
'bytes allocated for updates': 65768,
'bytes belonging to page images in the cache': 30285,
'bytes belonging to the history store table in the cache': 571,
'bytes currently in the cache': 104652,
'bytes dirty in the cache cumulative': 2813442,
'bytes not belonging to page images in the cache': 74366,
'bytes read into cache': 28042,
'bytes written from cache': 1283385,
'cache overflow score': 0,
'checkpoint blocked page eviction': 0,
'checkpoint of history store file blocked non-history store page eviction': 0,
'eviction calls to get a page': 2,
'eviction calls to get a page found queue empty': 2,
'eviction calls to get a page found queue empty after locking': 0,
'eviction currently operating in aggressive mode': 0,
'eviction empty score': 0,
'eviction passes of a file': 0,
'eviction server candidate queue empty when topping up': 0,
'eviction server candidate queue not empty when topping up': 0,
'eviction server evicting pages': 0,
'eviction server slept, because we did not make progress with eviction': 0,
'eviction server unable to reach eviction goal': 0,
'eviction server waiting for a leaf page': 0,
'eviction state': 64,
'eviction walk target pages histogram - 0-9': 0,
'eviction walk target pages histogram - 10-31': 0,
'eviction walk target pages histogram - 128 and higher': 0,
'eviction walk target pages histogram - 32-63': 0,
'eviction walk target pages histogram - 64-128': 0,
'eviction walk target pages reduced due to history store cache pressure': 0,
'eviction walk target strategy both clean and dirty pages': 0,
'eviction walk target strategy only clean pages': 0,
'eviction walk target strategy only dirty pages': 0,
'eviction walks abandoned': 0,
..............
Từ đầu ra trên, các yếu tố quan trọng là:
- wiredTiger.cache.maximum bytes configure
- wiredTiger.cache.bytes currently in the cache
- wiredTiger.cache.tracked dirty bytes in the cache
- wiredTiger.cache.pages read into cache
- wiredTiger.cache.pages written from cache
Các kích thước hiện tại của các yếu tố trên nên cho phép chúng ta đưa ra quyết định về việc tăng kích thước WiredTiger trong máy chủ của chúng ta. Một điều khác cũng quan trọng không kém là WiredTiger Concurrency Read và Write Ticket sử dụng, có thể được kiểm tra như dưới đây:
> db.serverStatus().wiredTiger.concurrentTransactions
{
write: { out: 0, available: 128, totalTickets: 128 },
read: { out: 1, available: 127, totalTickets: 128 }
}
Lưu ý: Nếu bạn nhận thấy các số đang tăng và có xu hướng tiến gần đến số lõi có sẵn, máy chủ của bạn có thể tiến sát với tình trạng quá tải CPU.
Như vậy, mình đã hướng dẫn install thành công MongoDB 5.0 trên Ubuntu 20.04. Hi vọng bài viết này hữu ích đối với bạn.
Mọi người cùng tìm kiếm: install mongodb ubuntu 20.04, install mongodb 5.0 ubuntu 20.04