在 Red Hat 或 CentOS 上安装 MongoDB Community Edition
在此页面上
Overview
使用本教程安装 MongoDB 5.0 MongoDB Community EditionLinuxCentOSLinuxOracleLinux1使用yum
软件包管理器的 Red Hat Enterprise 、 或 [ ] 上的 。
MongoDB 版本
本教程将安装 MongoDB 5.0 MongoDB Community Edition。要安装不同版本的 MongoDB Community,请使用此页面左上角的版本下拉菜单选择该版本的文档。
Considerations
平台支持
注意
EOL Notice
MongoDB 5.0 删除了对 x _8664MongoDB Community Edition 上的 RHEL /CentOS / 的支持Oracle6
MongoDB 5.0 社区版不再支持采用 s390x 架构的 RHEL/CentOS/Oracle 7
MongoDB 5.0 MongoDB Community Edition支持x86上以下 64 位版本的 Red Hat Enterprise Linux (RHEL)、 CentOS Linux 、 Oracle Linux [1] 、Rocky Linux和 AlmaLinux [2] _64架构:
RHEL / CentOS / Oracle / Rocky / AlmaLinux 8
RHEL / CentOS / Oracle 7
MongoDB 5.0 MongoDB Community Edition还支持 64RHEL /CentOS /Oracle /Rocky/AlmaLinux 上的 ARM8 架构。
更多信息,请参阅平台支持。
[1] | (1, 2) MongoDB 仅支持运行 Red Hat Compatible Kernel (RHCK) 的 Oracle Linux。MongoDB 不支持 Unbreakable Enterprise Kernel (UEK)。 |
[2] | 针对 RHEL 版本 8.0+ 发布的 MongoDB 本地部署产品,与 Rocky Linux 版本 8.0+ 和 AlmaLinux 版本 8.0+ 兼容并受支持(前提是这些发行版能满足其承诺,提供完整的 RHEL 兼容性)。 |
生产说明
在生产环境中部署 MongoDB 之前,请参阅自管理部署的生产注意事项文档,其中提供了有关生产环境中 MongoDB 部署的性能注意事项和配置建议。
安装 MongoDB Community Edition
按照以下步骤使用 yum
软件包管理器安装 MongoDB Community Edition。
配置存储库
创建 /etc/yum.repos.d/mongodb-org-5.0.repo
文件,以便直接使用 yum
来安装 MongoDB:
[mongodb-org-5.0] name=MongoDB Repository baseurl=https://repo.mongodb.org/yum/redhat/8/mongodb-org/5.0/x86_64/ gpgcheck=1 enabled=1 gpgkey=https://pgp.mongodb.com/server-5.0.asc
[mongodb-org-5.0] name=MongoDB Repository baseurl=https://repo.mongodb.org/yum/redhat/7/mongodb-org/5.0/x86_64/ gpgcheck=1 enabled=1 gpgkey=https://pgp.mongodb.com/server-5.0.asc
此外,也可直接从 MongoDB 存储库 下载 .rpm
文件。下载分类标准包括 Red Hat/CentOS 版本(例如 9
)、MongoDB 发布版本(例如5.0
)、架构(例如x86_64
)。
在 MongoDB 5.0 之前,奇数 MongoDB 发布版本(例如 4.3
)为开发版本。从 MongoDB 5.1 开始,MongoDB 每季度进行快速发布。有关快速发布版本与长期支持版本之间区别的更多信息,请参阅 MongoDB 版本控制。
安装 MongoDB Community Server
要安装最新稳定版 MongoDB,请执行以下命令:
sudo yum install -y mongodb-org
要安装 MongoDB 的特定版本,需单独指定各组件包并在软件包名称后面加上版本号,如下例所示:
sudo yum install -y mongodb-org-5.0.29 mongodb-org-database-5.0.29 mongodb-org-server-5.0.29 mongodb-org-shell-5.0.29 mongodb-org-mongos-5.0.29 mongodb-org-tools-5.0.29
注意
yum
当有新版本可用时会自动升级这些软件包。如果要阻止 MongoDB 升级,请将以下 exclude
指令添加到 /etc/yum.conf
文件,固定您的软件包:
exclude=mongodb-org,mongodb-org-database,mongodb-org-server,mongodb-mongosh,mongodb-org-mongos,mongodb-org-tools
运行 MongoDB Community Edition
先决条件
ulimit
大多数类 Unix 操作系统都会限制进程可以使用的系统资源。 这些限制可能会对MongoDB操作产生负面影响,应该进行调整。 有关平台的建议设置,请参阅自管理部署的 UNIX ulimit
设置。
注意
如果打开文件数的 ulimit
值低于 64000
,MongoDB 会生成初创企业警告。
目录路径
使用默认目录
默认情况下,MongoDB 使用 mongod
用户帐户运行,并且使用以下默认目录:
/var/lib/mongo
(数据目录)/var/log/mongodb
(日志目录)
软件包管理器在安装过程中创建默认目录。所有者和群组名称是mongod
。
使用非默认目录
要使用除默认目录外的数据目录和/或日志目录:
创建新目录。
编辑配置文件
/etc/mongod.conf
并相应修改以下字段:storage.dbPath
指定新的数据目录路径(例如/some/data/directory
)systemLog.path
以指定新的日志文件路径(例如/some/log/directory/mongod.log
)
确保运行 MongoDB 的用户有权访问这些目录:
sudo chown -R mongod:mongod <directory> 如果更改运行 MongoDB 进程的用户,必须赋予新用户访问这些目录的权限。
如果强制执行,请配置 SELinux。请参阅配置 SELinux。
配置 SELinux
重要
如果 SELinux 处于enforcing
模式,则必须通过进行以下两项策略调整来自定义 MongoDB 的 SELinux 策略:
允许访问 cgroup
当前的 SELinux 策略不允许 MongoDB 进程访问 /sys/fs/cgroup
,如此才能确定系统上的可用内存。如果打算以 enforcing
(强制执行)模式运行 SELinux,则需对 SELinux 策略进行以下调整:
确保您的系统已安装
checkpolicy
包:sudo yum install checkpolicy 创建自定义策略文件
mongodb_cgroup_memory.te
:cat > mongodb_cgroup_memory.te <<EOF module mongodb_cgroup_memory 1.0; require { type cgroup_t; type mongod_t; class dir search; class file { getattr open read }; } #============= mongod_t ============== allow mongod_t cgroup_t:dir search; allow mongod_t cgroup_t:file { getattr open read }; EOF 创建后,通过运行以下三个命令来编译并加载自定义策略模块:
checkmodule -M -m -o mongodb_cgroup_memory.mod mongodb_cgroup_memory.te semodule_package -o mongodb_cgroup_memory.pp -m mongodb_cgroup_memory.mod sudo semodule -i mongodb_cgroup_memory.pp
现在,MongoDB 进程可在 SELinux 设为 enforcing
(强制执行)的情况下访问正确的文件。
允许访问 以实现netstat
FTDC
当前的 SELinux 策略不允许 MongoDB 进程打开和读取 /proc/net/netstat
,如此才能进行全时诊断数据捕获 (FTDC)。如果打算在 enforcing
(强制执行)模式下运行 SELinux,则需对 SELinux 策略进行以下调整:
确保您的系统已安装
checkpolicy
包:sudo yum install checkpolicy 创建自定义策略文件
mongodb_proc_net.te
:cat > mongodb_proc_net.te <<EOF module mongodb_proc_net 1.0; require { type cgroup_t; type configfs_t; type file_type; type mongod_t; type proc_net_t; type sysctl_fs_t; type var_lib_nfs_t; class dir { search getattr }; class file { getattr open read }; } #============= mongod_t ============== allow mongod_t cgroup_t:dir { search getattr } ; allow mongod_t cgroup_t:file { getattr open read }; allow mongod_t configfs_t:dir getattr; allow mongod_t file_type:dir { getattr search }; allow mongod_t file_type:file getattr; allow mongod_t proc_net_t:file { open read }; allow mongod_t sysctl_fs_t:dir search; allow mongod_t var_lib_nfs_t:dir search; EOF 创建后,通过运行以下三个命令来编译并加载自定义策略模块:
checkmodule -M -m -o mongodb_proc_net.mod mongodb_proc_net.te semodule_package -o mongodb_proc_net.pp -m mongodb_proc_net.mod sudo semodule -i mongodb_proc_net.pp
重要
除上述之外,如果 SELinux 处于enforcing
模式,您还需要在以下两种情况下进一步自定义 SELinux 策略:
您正在使用自定义目录路径,而不是使用 RHEL 7中默认的
dbPath
、systemLog.path
或pidFilePath
} 。 0或更高版本,和/或您正在使用自定义端口,而不是默认的 MongoDB 端口。
使用自定义 MongoDB 目录路径
更新 SELinux 策略以允许
mongod
服务使用新目录:sudo semanage fcontext -a -t <type> </some/MongoDB/directory.*> 根据需要指定以下类型之一:
mongod_var_lib_t
针对数据目录mongod_log_t
针对日志文件目录mongod_var_run_t
针对 PID 文件目录
注意
请务必在目录末尾包含
.*
。更新新目录的 SELinux 用户策略:
sudo chcon -Rv -u system_u -t <type> </some/MongoDB/directory> 根据需要指定以下类型之一:
mongod_var_lib_t
针对数据目录mongod_log_t
针对日志目录mongod_var_run_t
针对 PID 文件目录
将更新后的 SELinux 策略应用于目录:
sudo restorecon -R -v </some/MongoDB/directory>
例如:
提示
请务必为 semanage fcontext
操作在此目录末尾包含 .*
。
如果使用的是非默认 MongoDB 数据路径
/mongodb/data
:sudo semanage fcontext -a -t mongod_var_lib_t '/mongodb/data.*' sudo chcon -Rv -u system_u -t mongod_var_lib_t '/mongodb/data' sudo restorecon -R -v '/mongodb/data' 如果使用的是非默认 MongoDB 日志目录
/mongodb/log
(即,如果日志文件路径为/mongodb/log/mongod.log
):sudo semanage fcontext -a -t mongod_log_t '/mongodb/log.*' sudo chcon -Rv -u system_u -t mongod_log_t '/mongodb/log' sudo restorecon -R -v '/mongodb/log'
使用自定义 MongoDB 端口
sudo semanage port -a -t mongod_port_t -p tcp <portnumber>
注意
您可能需要重新启动mongod
才能识别自定义端口。
步骤
请按照以下步骤在您的系统上运行 MongoDB Community Edition。 参照这些操作说明的前提是您在使用默认设置。
初始化系统
要运行和管理 mongod
进程,需使用操作系统内置的初始化系统。较新版本的 Linux 倾向于使用 systemd(它会使用 systemctl
命令),而较旧版本的 Linux 倾向于使用 System V init(它使用 service
命令)。
如果您不确定您的平台使用的是哪个初始化系统,请运行以下 命令:
ps --no-headers -o comm 1
然后根据结果选择下面合适的标签页:
systemd
- 选择下方的 systemd (systemctl) 标签页。init
- 选择下方的 System V Init (service) 标签页。
启动 MongoDB。
您可以通过发出以下命令来启动 mongod
进程:
sudo systemctl start mongod
如果收到类似下方的错误(在启动 mongod
时):
Failed to start mongod.service: Unit mongod.service not found.
首先运行以下命令:
sudo systemctl daemon-reload
然后再次运行上面的启动命令。
验证 MongoDB 是否已成功启动。
您可以通过发出以下命令来验证 mongod
进程已成功启动:
sudo systemctl status mongod
您可以通过选择执行以下命令,来确保 MongoDB 将在系统 重新启动后启动:
sudo systemctl enable mongod
停止 MongoDB。
您可以根据需要,通过发出以下命令来停止 mongod
进程:
sudo systemctl stop mongod
重启 MongoDB。
您可以通过发出以下命令来重启 mongod
进程:
sudo systemctl restart mongod
通过观察 /var/log/mongodb/mongod.log
文件中的输出,可以跟踪错误或重要消息的进程状态。
开始使用 MongoDB。
在与 mongod
相同的主机上启动 mongosh
会话。您可以在不使用任何命令行选项的情况下运行 mongosh
,从而连接在本地主机上运行且默认端口号为 27017 的 mongod
。
mongosh
如需进一步了解使用 mongosh
进行连接(例如连接在其他主机和/或端口上运行的 mongod
实例),请参阅 mongosh 文档。
为了帮助您开始使用 MongoDB,MongoDB 提供了各种驱动程序版本的入门指南。关于驱动程序文档,请参阅 开始使用 MongoDB 开发。
启动 MongoDB。
您可以通过发出以下命令来启动 mongod
进程:
sudo service mongod start
验证 MongoDB 是否已成功启动
您可以通过检查 /var/log/mongodb/mongod.log
的日志文件的内容来验证 mongod
进程是否已成功启动
[initandlisten] waiting for connections on port <port>
其中,<port>
是在 /etc/mongod.conf
中配置的端口,默认为 27017
。
您可以通过选择执行以下命令,来确保 MongoDB 将在系统 重新启动后启动:
sudo chkconfig mongod on
停止 MongoDB。
您可以根据需要,通过发出以下命令来停止 mongod
进程:
sudo service mongod stop
重启 MongoDB。
您可以通过发出以下命令来重启 mongod
进程:
sudo service mongod restart
通过观察 /var/log/mongodb/mongod.log
文件中的输出,可以跟踪错误或重要消息的进程状态。
开始使用 MongoDB。
在与 mongod
相同的主机上启动 mongosh
会话。您可以在不使用任何命令行选项的情况下运行 mongosh
,从而连接在本地主机上运行且默认端口号为 27017 的 mongod
。
mongosh
如需进一步了解使用 mongosh
进行连接(例如连接在其他主机和/或端口上运行的 mongod
实例),请参阅 mongosh 文档。
为了帮助您开始使用 MongoDB,MongoDB 提供了各种驱动程序版本的入门指南。关于驱动程序文档,请参阅 开始使用 MongoDB 开发。
卸载 MongoDB Community Edition
要从系统中完全删除 MongoDB,您必须删除 MongoDB 应用程序本身、配置文件以及任何包含 数据和日志的目录。以下部分将指导您完成所需的步骤。
警告
此过程将完全删除 MongoDB、其配置以及所有数据库。此过程不可逆,因此请确保在继续之前备份所有配置和数据。
停止 MongoDB。
通过发出以下命令来停止 mongod
进程:
sudo service mongod stop
更多信息
默认绑定本地主机
By default, MongoDB launches with bindIp
set to 127.0.0.1
, which binds to the localhost network interface. This means that the mongod
can only accept connections from clients that are running on the same machine. Remote clients will not be able to connect to the mongod
, and the mongod
will not be able to initialize a replica set unless this value is set to a valid network interface which is accessible from the remote clients.
该值可通过以下任一方式配置:
警告
在绑定到非本地主机(例如 可公开访问的) IP解决,确保已保护集群免遭未经授权的访问权限。 有关安全建议的完整列表,请参阅自托管部署的安全检查清单。 至少应考虑启用身份验证并强化网络基础架构。
有关配置bindIp
的详细信息,请参阅自托管部署中的IP绑定。
MongoDB 社区版包
MongoDB Community Edition 可从其专用 存储库获取,并包含以下官方支持的包:
包名称 | 说明 | ||||||
---|---|---|---|---|---|---|---|
mongodb-org | 自动安装下列组件包的 metapackage 。 | ||||||
mongodb-org-database | |||||||
mongodb-mongosh | 包含 MongoDB Shell ( mongosh )。 | ||||||
mongodb-org-tools | 自动安装下列组件包的
|