MongoDB 安装、配置与应用指南 · Dylan AI Agent Nexus
Install, Configure and Apply MongoDB for Local AI and Enterprise Apps
定位与应用场景
MongoDB 是文档型数据库,适合半结构化数据、事件日志、配置元数据、会话与缓存、素材与工作流记录等。与我们的本地 AI 平台配合,可作为业务数据与生成记录的高效存储。
快速安装(推荐优先 Docker)
docker run -d --name mongo -p 27017:27017 -v mongo_data:/data/db --restart unless-stopped mongo:7
如果需要账户认证:
docker run -d --name mongo -p 27017:27017 -v mongo_data:/data/db -e MONGO_INITDB_ROOT_USERNAME=admin -e MONGO_INITDB_ROOT_PASSWORD=changeit --restart unless-stopped mongo:7
Linux 原生(概念):使用官方源安装 mongod
与 mongosh
,并通过 systemctl
管理服务。
生产建议使用有持久卷的容器或原生安装;勿把数据目录放在临时卷。
基础配置(mongod.conf 关键项)
- 网络:net.port: 27017;net.bindIp: 127.0.0.1 或 私网地址。
- 认证:security.authorization: enabled(开启基于用户/角色的访问控制)。
- 存储:storage.dbPath: /data/db;storage.journal.enabled: true。
- 引擎:storage.engine: wiredTiger(默认);可配置 cache 大小。
- 日志:systemLog.destination: file;systemLog.path: /var/log/mongodb/mongod.log。
Docker 可通过挂载自定义配置:-v /path/mongod.conf:/etc/mongod.conf
并以 --config /etc/mongod.conf
启动。
账户与权限(首次创建)
mongosh --port 27017
use admin; db.createUser({user:"admin",pwd:"changeit",roles:[{role:"userAdminAnyDatabase",db:"admin"},{role:"readWriteAnyDatabase",db:"admin"}]})
db.auth("admin","changeit")
use appdb; db.createUser({user:"appuser",pwd:"StrongPass123",roles:[{role:"readWrite",db:"appdb"}]})
启用认证后,客户端连接需带上用户名/密码与 authSource=admin
。
常用运维命令
systemctl status mongod
systemctl restart mongod
mongosh "mongodb://admin:changeit@127.0.0.1:27017/?authSource=admin"
mongodump --uri "mongodb://admin:changeit@127.0.0.1:27017/?authSource=admin" --db appdb --out ./backup_appdb
mongorestore --uri "mongodb://admin:changeit@127.0.0.1:27017/?authSource=admin" --db appdb ./backup_appdb/appdb
mongosh --eval "db.getSiblingDB('appdb').collection.createIndex({created_at:1})" "mongodb://admin:changeit@127.0.0.1:27017/?authSource=admin"
数据建模与索引
- 文档设计:围绕查询路径优化结构;避免过深嵌套与超大文档。
- 索引策略:高频查询字段建立复合索引;谨慎使用通配与 $regex 前缀。
- TTL/归档:对短期日志使用 TTL 索引;历史数据分集合归档。
- 写策略:写 Concern/Read Preference 基于一致性与延迟权衡。
高可用(副本集)与扩展(分片)
生产应使用三节点副本集(Primary/Secondary/Arbiter 或三个数据节点)。
mongosh --eval "rs.initiate({_id:'rs0',members:[{_id:0,host:'host1:27017'},{_id:1,host:'host2:27017'},{_id:2,host:'host3:27017'}]})"
分片(Sharding)用于水平扩展超大数据集;需规划分片键、均衡与路由。
监控与排障
- 内置工具:mongostat、mongotop 快速观察。
- 指标采集:导出节点指标至 Prometheus/Grafana;收集慢查询日志。
- 常见问题:连接超时(网络/鉴权/白名单)、锁竞争(索引缺失/大文档)、磁盘 IOPS 瓶颈。
安全与合规
- 网络边界:仅绑定内网地址;外网访问需网关与 TLS。
- 账户策略:最小权限角色;定期轮换强密码与禁用默认账户。
- 数据保护:开启 Journal;制定冷/热备份计划与演练恢复。
- 合规:记录访问审计;敏感数据加密或脱敏存储。
PHP 应用接入示例
composer require mongodb/mongodb