centos mongodb使用案例分析
导读:CentOS 上 MongoDB 使用案例 一 场景与目标 在 CentOS 7/8 上部署 MongoDB 4.4/5.0,以 YUM 包管理方式安装,配置为系统服务,启用 鉴权与 远程访问,并创建业务库与用户。 通过 Docker 快...
CentOS 上 MongoDB 使用案例
一 场景与目标
- 在 CentOS 7/8 上部署 MongoDB 4.4/5.0,以 YUM 包管理方式安装,配置为系统服务,启用 鉴权与 远程访问,并创建业务库与用户。
- 通过 Docker 快速起一个带鉴权的 MongoDB 实例,便于开发/测试环境复用与隔离。
- 完成基础运维:创建库/用户、索引与聚合查询、备份与恢复、以及常见故障排查与性能优化要点。
二 安装与部署
-
YUM 安装与系统服务
- 创建仓库文件 /etc/yum.repos.d/mongodb-org-4.4.repo,内容示例:
- [mongodb-org-4.4]
- name=MongoDB Repository
- baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.4/x86_64/
- gpgcheck=1
- enabled=1
- gpgkey=https://www.mongodb.org/static/pgp/server-4.4.asc
- 安装与启动:
- sudo yum install -y mongodb-org
- sudo systemctl start mongod & & sudo systemctl enable mongod
- 说明:如需避免意外升级,可在 /etc/yum.conf 增加:exclude=mongodb-org,mongodb-org-server,mongodb-org-shell,mongodb-org-tools。以上流程适用于 CentOS 上的 MongoDB 安装与自启动管理。
- 创建仓库文件 /etc/yum.repos.d/mongodb-org-4.4.repo,内容示例:
-
Docker 快速部署(可选)
- 启动容器(映射端口 27017,挂载数据卷,开启鉴权):
- docker run --name mongodb -p 27017:27017 -v /data/db:/data/db -d mongo:latest --auth
- 进入容器创建管理员并验证:
- docker exec -it mongodb mongo admin
- db.createUser({ user: ‘admin’, pwd: ‘StrongPass!’, roles: [{ role: “userAdminAnyDatabase”, db: “admin” } ] } )
- db.auth(‘admin’, ‘StrongPass!’)
- 如需远程连接,可在容器内编辑 /etc/mongod.conf.orig 将 bindIp 调整为 0.0.0.0,并在宿主机放行 27017/tcp 防火墙端口。该方式适合快速搭建与隔离环境。
- 启动容器(映射端口 27017,挂载数据卷,开启鉴权):
三 安全与远程访问配置
- 配置文件 /etc/mongod.conf 关键项示例:
- net:
- bindIp: 0.0.0.0
- port: 27017
- security:
- authorization: enabled
- net:
- 重启生效:sudo systemctl restart mongod
- 防火墙放行(CentOS 7 firewalld):
- firewall-cmd --zone=public --add-port=27017/tcp --permanent
- firewall-cmd --reload
- 说明:生产环境务必开启 authorization 并限制来源 IP;仅在开发/测试环境可按需临时关闭鉴权(见下一节)。
四 基本运维与常用操作
- 安全初始化与业务库用户
- 连接 shell:mongo 或 mongo 127.0.0.1:27017/admin -u admin -p
- 创建业务库与只读/读写用户:
- use sales
- db.createUser({ user: ‘app_r’, pwd: ‘R3adOnly!’, roles: [{ role: “read”, db: “sales” } ] } )
- db.createUser({ user: ‘app_rw’, pwd: ‘RwPass!’, roles: [{ role: “readWrite”, db: “sales” } ] } )
- 常用 Shell 操作(CRUD、索引、聚合)
- 插入与查询:
- db.products.insertMany([{ sku: “A1001”, name: “Laptop”, price: 5999 } , { sku: “B2002”, name: “Mouse”, price: 99 } ])
- db.products.find({ price: { $gt: 100 } } , { name: 1, price: 1, _id: 0 } )
- 索引与聚合:
- db.products.createIndex({ sku: 1 } , { unique: true } )
- db.products.aggregate([ { $match: { price: { $gte: 100 } } } , { $group: { _id: “$name”, total: { $sum: 1 } } } , { $sort: { total: -1 } } ])
- 插入与查询:
- 备份与恢复
- mongodump --host 127.0.0.1 --port 27017 --db sales --out /backup/sales_$(date +%F)
- mongorestore --host 127.0.0.1 --port 27017 /backup/sales_2025-12-19/sales
- 说明:以上命令覆盖日常开发/运维的高频操作,包含连接、用户与权限、索引与聚合、备份恢复等核心能力。
五 常见问题与优化建议
- 无法远程连接
- 核对 bindIp=0.0.0.0、云服务器安全组/本机防火墙已放行 27017/tcp,以及 MongoDB 已启用 authorization 且使用正确凭据。
- 忘记管理员密码或需临时关闭鉴权(仅开发环境)
- 编辑 /etc/mongod.conf:security.authorization: “disabled”,重启后在本地无鉴权连接重置用户,再恢复为 “enabled”。切勿在生产环境长期关闭鉴权。
- 性能优化要点
- 为高频查询字段建立合适的 单字段/复合索引,避免全表扫描;结合 explain() 分析执行计划;对聚合与排序场景合理设计索引与内存使用;定期使用 mongostat/mongotop 观察负载与热点。
- 升级与迁移提示
- 升级前做好 全量备份,按小版本逐步升级,核对配置差异(如存储引擎与参数变更),升级后回归关键业务与性能基线。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: centos mongodb使用案例分析
本文地址: https://pptw.com/jishu/776658.html
