1. 安装官方源与版本选择
在Ubuntu上配置MongoDB时,优先通过官方源安装以确保版本兼容性与安全性。避免直接使用apt install mongodb(可能安装较旧版本),应执行以下步骤添加MongoDB官方仓库:导入GPG公钥(wget -qO - https://www.mongodb.org/static/pgp/server-4.4.asc | sudo apt-key add -),创建源列表文件(echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu $(lsb_release -cs)/mongodb-org/4.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.4.list),更新包列表后安装mongodb-org。需注意Ubuntu版本与MongoDB版本的适配性(如Ubuntu 22.04对应jammy源)。
2. 配置文件路径与关键参数调整
MongoDB的主配置文件位于/etc/mongod.conf,修改后需重启服务(sudo systemctl restart mongod)生效。关键参数需重点设置:
net.bindIp默认为127.0.0.1(仅本地访问),若需远程连接可改为0.0.0.0(需配合防火墙限制IP);net.port默认27017,可根据需求修改(需确保端口未被占用)。security.authorization需设置为enabled(启用身份验证,防止未授权访问);若启用TLS/SSL,需添加net.ssl.mode: requireSSL及证书路径(PEMKeyFile、CAFile)。storage.dbPath指定数据存储路径(默认/var/lib/mongodb),需确保目录存在且权限正确(chown -R mongodb:mongodb /var/lib/mongodb);storage.journal.enabled需设为true(启用日志,确保数据持久性)。processManagement.fork设为true(后台运行),pidFilePath指定PID文件路径(如/var/run/mongodb/mongod.pid)。3. 安全配置要点
security section添加authorization: enabled,重启服务后,需通过mongo shell创建管理员用户(use admin; db.createUser({user: "admin", pwd: "强密码", roles: [{role: "root", db: "admin"}]})),避免未授权访问。net.bindIp仅允许可信IP连接(如127.0.0.1,192.168.1.100),并结合Ubuntu防火墙(ufw)开放MongoDB端口(sudo ufw allow from 192.168.1.100 to any port 27017)。/etc/systemd/system/disable-thp.service,内容为[Unit] Description=Disable Transparent Huge Pages (THP); [Service] Type=simple; ExecStart=/bin/sh -c "echo 'never' > /sys/kernel/mm/transparent_hugepage/enabled && echo 'never' > /sys/kernel/mm/transparent_hugepage/defrag"; [Install] WantedBy=multi-user.target,然后执行sudo systemctl daemon-reload; sudo systemctl enable --now disable-thp.service。/etc/security/limits.d/mongodb.conf,增加mongod soft nproc 64000; mongod hard nproc 64000; mongod soft nofile 64000; mongod hard nofile 64000(限制进程数与文件描述符,避免资源耗尽)。4. 性能优化技巧
storage.wiredTiger.engineConfig.cacheSizeGB(WiredTiger存储引擎缓存大小),建议设置为系统总内存的50%-70%(如16GB内存可设为8GB),避免占用过多内存导致系统卡顿。db.collection.createIndex({field: 1})),提升查询性能;避免过度索引(会增加写入开销)。operationProfiling.mode: slowOp,记录慢查询)、审计日志(auditLog.destination: file,记录用户操作),使用mongostat(监控操作速率)、mongotop(监控集合级读写时间)或第三方工具(如PMM)实时监控性能。sharding.clusterRole: shardsvr,分散数据到多个节点);高可用需求启用复制集(replication.replSetName: myReplSet,自动故障转移)。5. 日志与维护管理
systemLog.destination设为file(日志输出到文件),systemLog.path指定路径(如/var/log/mongodb/mongod.log),logAppend: true(追加日志,避免覆盖)。mongodump(逻辑备份,mongodump --host localhost --port 27017 --out /backup/mongodump)或mongorestore(恢复数据)备份数据,建议备份到异地存储。logrotate),避免日志文件过大占用磁盘空间(示例配置:/etc/logrotate.d/mongodb,内容为/var/log/mongodb/mongod.log { daily; rotate 7; compress; missingok; notifempty; sharedscripts; postrotate; systemctl reload mongod; endscript; })。