MongoDB 7.0.11 安装教程

MongoDB 7.0.11 安装教程

一、环境说明

环境说明
服务器阿里云ECS服务器
服务器架构x86
服务器核心16
服务器RAM64G
操作系统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