MongoDB 7.0.11 安装教程
一、环境说明
环境 | 说明 |
---|---|
服务器 | 阿里云ECS服务器 |
服务器架构 | x86 |
服务器核心 | 16 |
服务器RAM | 64G |
操作系统 | Alibaba Cloud Linux release 3 (Soaring Falcon) |
文件系统 | EXT4 |
Mongo版本 | 7.0.11 |
注意:根据通义千问的回答
Alibaba Cloud Linux 3.2104 64位是基于龙蜥社区(Anolis OS)的龙蜥操作系统开发的。龙蜥操作系统本身是一个开源项目,它与Red Hat Enterprise Linux (RHEL) 和 CentOS生态高度兼容。因此,Alibaba Cloud Linux 3系列可以视为在RHEL/CentOS的基础上进行了深度优化和定制,以适应阿里云的特定需求和环境。
Alibaba Cloud Linux 3.x 系列,特别是版本 3.2104,设计上是与 CentOS Stream 特别是 CentOS Stream 8 兼容的。CentOS Stream 是一个滚动更新的版本,它位于RHEL开发周期的上游,提供了接近RHEL的最新软件包。由于Alibaba Cloud Linux 3旨在与RHEL/CentOS生态和操作方式完全兼容,您可以认为它与CentOS Stream 8或相近的CentOS版本有良好的兼容性。
然而,值得注意的是,CentOS Linux 8 在2021年底已经停止了支持,而CentOS Stream 8也在2022年结束生命周期,被CentOS Stream 9所取代。因此,如果您的目标是与当前支持的CentOS版本兼容,那么Alibaba Cloud Linux 3.2104 应该与 CentOS Stream 9 有良好的兼容性,尽管这可能需要验证最新的兼容性和更新情况。
在选择时,考虑到持续支持和维护,您可能需要考虑使用最新的CentOS Stream版本或者直接使用Alibaba Cloud Linux的最新版本,以确保获得最新的安全更新和功能改进。
下载 Red Hat/ CentOS 8.0 x64 的MongoDB 7.0.11 版本
MongoDB 下载页面
MongoDB Community Server - server(rpm包)
MongoDB Community Server - tgz(tar包)
背景说明
这篇文章的初衷是在于实际业务中,使用阿里云的MongoDB云数据库遇到了性能瓶颈。
我们的业务数据量每天预计至少15亿,每天需要对这些数据进行统计,有日统计、小时统计。其中多个日统计的统计基础是来自业务数据预处理(预处理是实时的,每两分钟一次、约250万左右的数据,包括去重、合并)计算后的中间值,这些中间值需要存储到Mongo DB中,最后借助Mongo DB的天然优势进行聚合计算,快速得出结果。
阿里云的MongoDB云数据库的服务器配置是16核、32GRAM、3节点的副本集,其中按照阿里云默认的规则会将服务器60%左右的内存向上取整后作为Mongo的WiredTiger引擎的cacheSizeGB大小(即实际为20G),且不可改变。
业务中间值的数据量8个小时左右达到17G,此后再次写入数据将会变得缓慢。实际测试结果是2分钟的预处理结果(即中间值)需要至少4分钟才能完整写入Mongo DB,也就是说当数据量约达到cacheSizeGB左右时写入性能将会降低。由于到了凌晨会开启新一天的数据计算,这势必导致每天的数据至少有3到4个小时的数据丢失。
业务每时每刻都在跑,没有固定的热点数据,可以讲都是热点数据。
分析得出的结论是:
Mongo DB的实例运行是健康的(经过测试,其实阿里云的云数据库Mongo DB的配置已经是最优的了,应用侧也已经最大程度进行优化了),但是距离理想效果偏差还是很大,是硬件问题。且比较无奈的是阿里的cacheSizeGB是无法更改的,我们无法进行内存或者操作系统层面的调优。只能通过升级配置去解决。其实之前已经升级过一次了,如果再升级,成本很大。
我们只能通过自建Mongo DB的方式去解决这个问题,因为服务器成本比存储成本要低得多,因而有了这篇文章。
二、安装步骤(rpm方式)
1. 创建目录
# 创建日志目录 sudo mkdir /var/log/mongodb # 创建数据库目录 sudo mkdir /var/lib/mongodb # 修改权限 sudo chown -R mongod:mongod /var/lib/mongodb sudo chmod -R 755 /var/lib/mongodb
2. 安装和配置
## 安装 sudo rpm -i mongodb-org-server-7.0.11-1.el8.x86_64.rpm
安装完成后配置文件默认路径
/etc/mongod.conf
## 修改配置文件 sudo vim /etc/mongod.conf
mongod.conf配置文件内容
# mongod.conf # for documentation of all options, see: # http://docs.mongodb.org/manual/reference/configuration-options/ # where to write logging data. systemLog: destination: file logAppend: true path: /var/log/mongodb/mongod.log # Where and how to store data. storage: dbPath: /var/lib/mongodb engine: wiredTiger wiredTiger: engineConfig: cacheSizeGB: 38 # how the process runs processManagement: timeZoneInfo: /usr/share/zoneinfo # network interfaces net: port: 27017 bindIp: 0.0.0.0 # Enter 0.0.0.0,:: to bind to all IPv4 and IPv6 addresses or, alternatively, use the net.bindIpAll setting. #security: security: authorization: enabled #operationProfiling: #replication: #sharding: ## Enterprise-Only Options #auditLog:
注意:
- cacheSizeGB尽量不要超过内存的60%
- 此时以下配置可以注释掉
security: authorization: enabled
3. 启动、初始化及授权
# 启动Mongo服务 sudo systemctl start mongod.service # 设置Mongo服务随服务器启动 sudo systemctl enable mongod.service
通过MongoDB Compass连接到数据库,通过mongo shell进行授权操作
# 在mongo shell中进行操作 # 切换数据库到admin use admin # 创建具有最高权限的用户 db.createUser( { user: "root", pwd: "root", roles: [ "root" ], mechanisms: [ "SCRAM-SHA-256" ] } )
注意:以上操作执行完成后,将上一步中注释的内容放开,然后重启mongo服务
# 重启mongo数据库服务 sudo systemctl restart mongod.service
三、性能检测工具
注意:
MongoDB 4.4版本开始默认只保留部分命令(mongo、mongos、mongod、install_compass),如使用其余命令,如mongostat、mongotop等的,则需要安装“MongoDB Database Tools”。
MongoDB Command Line Database Tools Download(rpm)
MongoDB Command Line Database Tools Download(tar包)
安装
sudo rpm -i /usr/local/mongodb-database-tools-rhel80-x86_64-100.9.4.rpm
若是安装过程中遇到以下报错
error: Failed dependencies: cyrus-sasl is needed by mongodb-database-tools-100.9.4-1.x86_64 cyrus-sasl-gssapi is needed by mongodb-database-tools-100.9.4-1.x86_64 cyrus-sasl-plain is needed by mongodb-database-tools-100.9.4-1.x86_64
报错原因:这些是Cyrus SASL库的组件,用于支持不同的身份验证机制,包括MongoDB可能使用的一些机制
执行以下命令安装缺失的依赖包,然后重新再执行上边的安装命令即可解决
sudo yum install cyrus-sasl cyrus-sasl-gssapi cyrus-sasl-plain
四、Mongo Shell
注意:
MongoDB 6.x之后不再自带mongo命令,而是需要单独安装Mongo Shell
由于我是通过Mongo DB Compass连接的,MongoDB Compass可以执行Mongo Shell命令。但是偶尔需要在服务器上执行一些Mongo 命令,譬如查看一下服务器状态,需要安装一下Mongo Shell.
Mongo Shell下载链接(rpm)
# 安装 sudo rpm -i mongodb-mongosh-2.2.6.x86_64.rpm