如何在 Debian 11/Debian 10 上安装 MongoDB 6 |
NoSQL 数据库是一种数据库类型,其中信息存储在 JSON 文档中,而不是关系数据库中使用的行和列。这项技术是在 20 世纪 70 年代实施的,当时数据存储极其昂贵。在 SQL 数据库中,数据按行和列进行组织,这使得它们极其不灵活且难以修改。在 NoSQL 数据库中,开发人员不受严格的表格方法的束缚,因此能够享受灵活的模式,并可以轻松地扩展大量数据和高用户负载。
最流行的 NoSQL 数据库是 Apache Cassandra、ElasticSearch、Amazon DynamoDB、HBase、Couchbase、Redis、MongoDB 等
MongoDB 是一个跨平台、面向对象的 NoSQL 数据库,由 MongoDB Inc. 开发,并根据服务器端公共许可证获得许可。它是用C++语言实现的,同时支持32位和64位系统。 MongoDB 在需要巨大可扩展性和灵活性的应用程序中被广泛使用。
MongoDB 通过副本集提供高可用性。这通常是一组具有相同数据集的 mongod 服务。它们提供高可用性,这是所有生产部署的基础。在 MongoDB 复制中,有数据承载节点和一个可选的仲裁节点。在数据承载节点组中,只有一个被认为是主节点,其他节点被认为是次节点。主节点主要接收来自应用程序的所有写操作。从节点复制主节点的操作日志。辅助节点从主节点复制数据集。
可以通过下图来理解架构:
MongoDB 在以下领域得到广泛使用:
- 库存和目录管理 – NoSQL 数据库提供高可用性和可预测、经济高效的水平可扩展性。这使得 MongoDB 在拥有大量在线目录的电子商务公司中非常有效。
- 电子商务产品目录 – 组织能够通过聚合客户和产品信息来提供客户的单一视图,从而构建提高客户满意度的应用程序
- 移动和社交网站 – MongoDB 能够极快地处理大量数据。
- 实时分析和高速记录 – 用于需要大量高速数据记录和聚合的客户分析、实时数据集成
- 欺诈检测和身份认证 – 使用MongoDB提供大数据量的实时分析以识别任何异常
- 金融服务和支付
- 内容管理系统
MongoDB 6.0的特点
最新版本MongoDB 6.0提供了许多功能,包括:
- 改进了对事件驱动架构的支持 – MongoDB 6.0 丰富了变更流,增加了将变更流提升到新水平的功能。
- 更多的运算符,更少的工作 – 运算符使您能够将更多的工作推送到数据库,同时花费更少的时间编写代码。
- 从丰富的查询中获得更深入的见解 - 用户能够处理多个文档并返回计算结果。这可以帮助构建复杂的数据处理管道来提取您需要的见解。
- 数据安全和运营效率 – 它允许用户利用自己的符合 KMIP 的密钥管理系统,在将审核事件写入磁盘之前对其进行压缩和加密。日志加密可保护事件的完整性和机密性。
- 无缝数据同步 – 集群间同步提供了一种将数据迁移到云的简单方法,在两个 MongoDB 集群之间实现连续、单向的数据同步
- 更具弹性的操作 – MongoDB 的副本集设计使用户能够承受并克服中断。 MongoDB 6.0 引入了对分片的改进,这是一种支持水平可扩展性的机制。
本指南提供了如何在 Debian 11/Debian 10 上安装 MongoDB 6 所需的步骤
系统要求
为了能够安装和运行 MongoDB,您需要以下 CPU 架构:
对于 x86_64 微架构:
- Intel x86_64 Sandy Bridge 或更高版本的 Core 处理器或者 Tiger Lake 或更高版本的 Celeron 或 Pentium 处理器
- Bulldozer 或更高版本处理器的 AMD x86_64。
ARM64微架构
使用以下命令检查架构:
$ cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 94
model name : Intel(R) Xeon(R) CPU E3-1275 v5 @ 3.60GHz
stepping : 3
microcode : 0xf0
cpu MHz : 3600.056
cache size : 16384 KB
.....
1.添加MongoDB 6.0存储库
MongoDB 提供两个主要版本:
- 社区版:免费版
- 企业版:作为 Mongo Enterprise Advanced 订阅的一部分提供。它提供先进的功能,例如磁盘加密、Kerberos 和 LDAP 支持、审核等。
在本指南中,我们将安装社区版,但由于默认存储库中未提供它,因此我们需要将存储库添加到系统中。
安装所需的工具:
sudo apt install wget curl gnupg software-properties-common apt-transport-https ca-certificates lsb-release
首先导入GPG密钥
curl -fsSL https://www.mongodb.org/static/pgp/server-6.0.asc|sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/mongodb-6.gpg
现在将 MongoDB 6.0 存储库添加到系统中。
##On Debian 11
echo "deb http://repo.mongodb.org/apt/debian bullseye/mongodb-org/6.0 main" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list
##On Debian 10
echo "deb http://repo.mongodb.org/apt/debian buster/mongodb-org/6.0 main" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list
添加后,更新 APT 包索引:
sudo apt update
2.安装MongoDB 6.0服务器
添加存储库后,可以使用以下命令安装 MongoDB 6.0:
sudo apt install mongodb-org
依赖树:
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 39 not upgraded.
Need to get 134 MB of archives.
After this operation, 458 MB of additional disk space will be used.
Do you want to continue? [Y/n] y
您还可以为每个组件安装特定版本:
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>
安装完成后,启动并启用该服务:
sudo systemctl enable --now mongod
验证服务是否正在运行:
$ systemctl status mongod
● mongod.service - MongoDB Database Server
Loaded: loaded (/lib/systemd/system/mongod.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2023-08-29 00:46:04 UTC; 3s ago
Docs: https://docs.mongodb.org/manual
Main PID: 2245 (mongod)
Memory: 72.9M
CPU: 774ms
CGroup: /system.slice/mongod.service
└─2245 /usr/bin/mongod --config /etc/mongod.conf
Aug 29 00:46:04 debian11 systemd[1]: Started MongoDB Database Server.
Aug 29 00:46:04 debian11 mongod[2245]: {"t":{"$date":"2023-08-29T00:46:04.173Z"},"s":"I", "c":"CONTROL", "id":7484500, "ctx":"-","msg":"Environment variable MONGODB_CONFIG_OVERRIDE_NOFORK == 1, o>
root@debian11:~#
检查 MongoDB 的可用版本:
$ mongod --version
db version v6.0.9
Build Info: {
"version": "6.0.9",
"gitVersion": "e61bf27c2f6a83fed36e5a13c008a32d563babe2",
"openSSLVersion": "OpenSSL 1.1.1n 15 Mar 2022",
"modules": [],
"allocator": "tcmalloc",
"environment": {
"distmod": "debian11",
"distarch": "x86_64",
"target_arch": "x86_64"
}
}
3.配置MongoDB 6.0服务器
MongoDB 将其配置文件存储在/etc/mongod.conf中。您可以在该文件中进行许多配置,例如数据库路径、日志路径、监听端口、地址等。在本指南中,我们将进行以下配置:
启用密码验证
安装后,MongoDB 不会为数据库提供密码保护。这可能会造成安全威胁,因为任何人都可以访问和使用数据库。为了保护实例,您需要创建一个用户并设置密码:
访问外壳:
mongosh
创建管理员用户:
use admin
db.createUser(
{
user: "mongouser",
pwd: passwordPrompt(), // or cleartext password
roles: [ { role: "userAdminAnyDatabase", db: "admin" }, "readWriteAnyDatabase" ]
}
)
您将需要提供该用户的密码。设置后,退出 shell 并在配置文件中启用身份验证:
sudo vim /etc/mongod.conf
找到并取消注释安全部分,然后添加如图所示的行。
security:
authorization: "enabled"
启用远程访问
MongoDB 默认监听 localhost,要更改此设置并使其能够监听 IP 地址,请编辑配置,如下所示:
# network interfaces
net:
port: 27017
bindIp: 0.0.0.0
完成所需的更改后,保存文件并重新启动服务:
sudo systemctl restart mongod
如果启用了防火墙,请允许端口通过:
sudo ufw allow 27017
4.使用MongoDB 6.0
现在使用之前创建的管理员用户和密码访问 MongoDB shell。
$ mongosh -u mongouser
Enter password: *********
Connecting to: mongodb://<credentials>@127.0.0.1:27017/?directConnection=true&serverSelectionTimeoutMS=2000&appName=mongosh+1.5.3
Using MongoDB: 6.0.0
Using Mongosh: 1.5.3
For mongosh info see: https://docs.mongodb.com/mongodb-shell/
test>
创建数据库 MongoDB
首先,列出可用的数据库:
> show dbs
admin 132.00 KiB
config 12.00 KiB
local 72.00 KiB
要在 MongoDB 中创建数据库,只需切换到不存在的数据库即可。例如:
> use sampledb
switched to db sampledb
在 MongoDB 中创建集合
集合相当于 SQL 数据库中的表。要在 MongoDB 中创建表,请使用具有以下语法的命令:
db.userdetails.insertOne(
{F_Name: "Computing",
L_NAME: "ForGeeks",
ID_NO: "124345",
AGE: "49",
TEL: "25465467187"
}
)
创建后,列出可用的集合:
> show collections
userdetails
创建整体管理员
整体管理员有能力访问和使用任何数据库。例如,之前创建的用户是总体管理员。要创建另一个管理员用户,请使用以下命令:
use admin
db.createUser(
{
user: 'admin',
pwd: 'AdminPassW0rd',
roles: [ { role: 'userAdminAnyDatabase', db: 'admin' } ]
}
);
为特定数据库创建管理员
您可以为特定数据库创建管理员用户。例如:
use testdatabase
db.createUser(
{
user: 'testadmin',
pwd: 'TestPassW0rd',
roles: [ { role: 'userAdmin', db: 'testdatabase' } ]
}
);
创建具有读写权限的用户
还可以创建对特定数据库具有读写权限的用户。例如:
use testdatabase
db.createUser(
{
user: 'testuser',
pwd: 'TestPassW0rd',
roles: [ { role: 'readWrite', db: 'testdatabase' } ]
}
);
列出 MongoDB 上的用户
要列出可用用户,请查询system.users集合。
use admin
db.system.users.find()
示例输出:
使用以下命令退出 shell:
> exit
5. 在 MongoDB 中使用自定义数据路径
通常,MongoDB 将其数据存储在/var/lib/mongodb中。但是,这可以更改为另一个首选数据路径。要实现此目的,请首先停止服务:
sudo systemctl stop mongod.service
使用正确的权限创建自定义数据路径:
sudo mkdir -p /data/mongo
sudo chown -R mongodb:mongodb /data/mongo
继续并将旧目录的内容复制到此新路径:
sudo cp -r /var/lib/mongodb/* /data/mongo
您可以将旧目录移动到备份文件:
sudo mv /var/lib/mongodb /var/lib/mongodb.bak
现在编辑配置文件以适应新路径:
sudo vim /etc/mongod.conf
进行以下更改:
# Where and how to store data.
storage:
dbPath: /data/mongo
.......
保存文件,重新加载守护进程并启动服务:
sudo systemctl daemon-reload
sudo systemctl start mongod
验证服务是否正在运行:
$ systemctl status mongod
● mongod.service - MongoDB Database Server
Loaded: loaded (/lib/systemd/system/mongod.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2022-07-28 16:36:02 EDT; 3s ago
Docs: https://docs.mongodb.org/manual
Main PID: 2020 (mongod)
Memory: 164.3M
CPU: 737ms
CGroup: /system.slice/mongod.service
└─2020 /usr/bin/mongod --config /etc/mongod.conf
瞧!
结论
在本指南中,我们在 Debian 11/Debian 10 上安装了 MongoDB 6。除此之外,我们还学习了如何配置 MongoDB,以及创建用户、数据库和集合。
有兴趣了解更多吗?
- 如何在 Debian 上安装 MongoDB 5.0
- 如何在 Ubuntu 上安装 MongoDB 5.0
- 在 CentOS 和 Rocky Linux 8 上安装 MongoDB Compass