Skip to content

MongoDB-部署

下载地址:https://www.mongodb.com/try/download/community

官网文档:https://www.mongodb.com/zh-cn/docs/manual/administration/install-on-linux/

配置文件解析

yaml
# MongoDB 配置文件示例 (YAML格式)
# 注意:YAML对缩进敏感,使用2个空格作为缩进标准

# 系统日志配置
systemLog:
  destination: file           # 日志输出目标:file(文件)/syslog(系统日志)
  path: "/var/log/mongodb/mongod.log"  # 日志文件路径
  logAppend: true             # true=追加模式,false=覆盖模式
  logRotate: "reopen"         # 日志轮转方式:"rename"(重命名)/"reopen"(重新打开)
  verbosity: 0                # 日志详细级别:0(默认)-5(最详细)
  quiet: false                # 是否减少日志输出(生产环境建议false)

# 进程管理配置
processManagement:
  fork: true                  # 是否以守护进程方式运行
  pidFilePath: "/var/run/mongodb/mongod.pid"  # PID文件位置
  timeZoneInfo: "/usr/share/zoneinfo"  # 时区数据库路径

# 网络接口配置
net:
  port: 27017                 # 监听端口(默认27017)
  bindIp: "127.0.0.1"         # 绑定IP(多个IP用逗号分隔,"0.0.0.0"监听所有)
  maxIncomingConnections: 10000 # 最大连接数(默认100000)
  wireObjectCheck: true       # 是否验证请求的BSON对象
  compression:                # 网络压缩配置
    compressors: "snappy,zstd,zlib"  # 启用压缩算法(按优先级排序)
  unixDomainSocket:
    pathPrefix: /var/run/mongodb

# 存储引擎配置
storage:
  # 数据存储目录路径(必须存在且mongod进程有读写权限)
  dbPath: "/data/mongodb/data"
  # 存储引擎类型(可选:wiredTiger/inMemory,生产环境推荐wiredTiger)
  engine: "wiredTiger"
  # WiredTiger存储引擎专用配置
  wiredTiger:
    engineConfig:
      # 缓存大小(GB),建议:
      # - 开发环境:物理内存的50%
      # - 生产环境:物理内存的60%(需保留内存给系统和其他进程)
      cacheSizeGB: 2
      # Journal日志压缩算法(可选:none/snappy/zlib/zstd)
      # 注意:7.0+版本journal强制启用,此处仅配置压缩方式
      journalCompressor: "snappy"
      # 统计信息日志间隔(秒):
      # 0=禁用统计日志,>0则定期写入统计信息
      statisticsLogDelaySecs: 0
    # 集合数据存储配置  
    collectionConfig:
      # 数据块压缩算法(可选:none/snappy/zlib/zstd)
      # zstd压缩率最高但CPU消耗较大,snappy是平衡选择
      blockCompressor: "zstd"
    # 索引存储配置  
    indexConfig:
      # 是否启用索引前缀压缩(true可减少索引存储空间)
      prefixCompression: true

# 安全配置
security:
  authorization: "enabled"    # 认证机制:"enabled"/"disabled"
  keyFile: "/etc/mongodb.key" # 集群认证密钥文件路径
  ssl:                        # SSL/TLS配置
    mode: "requireTLS"        # 模式:disabled/allowTLS/preferTLS/requireTLS
    PEMKeyFile: "/etc/ssl/mongodb.pem"  # 证书文件路径
    CAFile: "/etc/ssl/ca.pem" # CA证书路径
  enableEncryption: true      # 是否启用存储加密
  encryptionKeyFile: "/etc/mongodb-keyfile" # 加密密钥文件

# 复制集配置(单机部署可省略)
replication:
  oplogSizeMB: 1024          # oplog大小(MB)
  replSetName: "rs0"         # 复制集名称
  enableMajorityReadConcern: true # 是否启用majority读关注

# 性能调优参数
setParameter:
  ttlMonitorEnabled: true     # 是否启用TTL监视器
  logLevel: 1                # 全局日志级别(0-5)
  cursorTimeoutMillis: 600000 # 游标超时时间(毫秒)
  notablescan: false         # 是否禁止全表扫描(生产环境建议true)

# 审计日志配置
auditLog:
  # 更明确的配置方式
  file:
    path: "/data/mongodb/logs/audit.json"
    format: JSON
  filter: '{ atype: { $in: [ "createCollection", "dropCollection" ] } }'

yum安装

bash
# openEuler 24.03 换成baseurl=https://repo.mongodb.org/yum/redhat/9/mongodb-org/8.0/x86_64/
cat > /etc/yum.repos.d/mongodb-org-8.0.repo<< EOF
[mongodb-org-8.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/8/mongodb-org/8.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://pgp.mongodb.com/server-8.0.asc
EOF

### 安装最新版
dnf install -y mongodb-org

### 安装特定版
dnf install -y \
   mongodb-org-8.0.12 \
   mongodb-org-database-8.0.12 \
   mongodb-org-server-8.0.12 \
   mongodb-mongosh \
   mongodb-org-mongos-8.0.12 \
   mongodb-org-tools-8.0.12 \
   mongodb-org-database-tools-extra-8.0.12

当有新版本可用时,yum 会自动升级包。如果要阻止 MongoDB 升级,请将以下 exclude 指令添加到 /etc/yum.conf 文件,以锁定您的包:

bash
exclude=mongodb-org,mongodb-org-database,mongodb-org-server,mongodb-mongosh,mongodb-org-mongos,mongodb-org-tools

目录路径

使用默认目录

默认情况下,MongoDB 使用 mongod 用户帐户运行,并且使用以下默认目录:

  • /var/lib/mongo(数据目录)
  • /var/log/mongodb(日志目录

软件包管理器在安装过程中创建默认目录。所有者和群组名称是mongod

使用非默认目录

要使用除默认目录外的数据目录和/或日志目录:

  1. 创建新目录。

  2. 编辑配置文件 /etc/mongod.conf 并相应修改以下字段:

    • storage.dbPath 指定新的数据目录路径(例如/some/data/directory
    • systemLog.path 以指定新的日志文件路径(例如 /some/log/directory/mongod.log
  3. 确保运行 MongoDB 的用户有权访问这些目录:

    sudo chown -R mongod:mongod <directory>

    如果更改运行 MongoDB 进程的用户,必须赋予新用户访问这些目录的权限。

二进制包部署-rhel

安装依赖

bash
# openEuler 实际安装的依赖项
dnf install compat-openssl11-libs
# 官方推荐安装依赖项
dnf install libcurl openssl xz-libs

下载二进制包

bash
# 下载
wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel8-7.0.22.tgz
# 解压
tar -xvf mongodb-linux-x86_64-rhel8-7.0.22.tgz
# 改名,放到目录:/usr/local
mv mongodb-linux-x86_64-rhel80-7.0.22 /usr/local/mongodb
# 创建软连接
ln -s /usr/local/mongodb/bin/* /usr/local/sbin/

创建运行环境

bash
# 创建程序用户
useradd -Ms /sbin/nologin mongod

# 创建数据目录
mkdir -p /data/mongodb/{data,logs}
# 创建进程目录
mkdir -p /var/run/mongodb

chown -R mongod:mongod /data/mongodb /var/run/mongodb
sudo chmod 0755 /data/mongodb /var/run/mongodb

设置service管理文件

bash
sudo tee /usr/lib/systemd/system/mongod.service <<'EOF'
[Unit]
Description=MongoDB Database Server
Documentation=https://docs.mongodb.org/manual
After=network-online.target
Wants=network-online.target

[Service]
User=mongod
Group=mongod
Environment="OPTIONS=-f /etc/mongod.conf"
Environment="MONGODB_CONFIG_OVERRIDE_NOFORK=1"
Environment="GLIBC_TUNABLES=glibc.pthread.rseq=0"
EnvironmentFile=-/etc/sysconfig/mongod
ExecStart=/usr/local/sbin/mongod $OPTIONS
RuntimeDirectory=mongodb
# file size
LimitFSIZE=infinity
# cpu time
LimitCPU=infinity
# virtual memory size
LimitAS=infinity
# open files
LimitNOFILE=64000
# processes/threads
LimitNPROC=64000
# locked memory
LimitMEMLOCK=infinity
# total threads (user+kernel)
TasksMax=infinity
TasksAccounting=false
# Recommended limits for mongod as specified in
# https://docs.mongodb.com/manual/reference/ulimit/#recommended-ulimit-settings

[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable --now mongod

客户端工具

Linux

下载地址:https://www.mongodb.com/try/download/shell

旧版 (≤5.0)需要安装mongo,新版 (≥6.0)安装mongosh

下载安装包

bash
wget https://downloads.mongodb.com/compass/mongosh-2.5.6-linux-x64.tgz
tar -zxvf mongosh-*.tgz
sudo cp mongosh-*/bin/mongosh /usr/local/bin/

连接数据库

bash
# 基本连接
mongosh "mongodb://localhost:27017"

# 带认证连接
mongosh "mongodb://username:password@localhost:27017/admin?authSource=admin"

# 指定SSL连接
mongosh --tlsCAFile /path/to/ca.pem --host mongodb.example.com

compass(GUI)

下载地址:https://www.mongodb.com/try/download/compass

系统优化

bash
# 修改句柄数
vi /etc/security/limits.conf
* soft nofile 65535
* hard nofile 65535