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文件,以锁定您的包:bashexclude=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。
使用非默认目录
要使用除默认目录外的数据目录和/或日志目录:
创建新目录。
编辑配置文件
/etc/mongod.conf并相应修改以下字段:storage.dbPath指定新的数据目录路径(例如/some/data/directory)systemLog.path以指定新的日志文件路径(例如/some/log/directory/mongod.log)
确保运行 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.comcompass(GUI)
下载地址:https://www.mongodb.com/try/download/compass
系统优化
bash
# 修改句柄数
vi /etc/security/limits.conf
* soft nofile 65535
* hard nofile 65535