一、基础环境部署
1. 系统准备
bash# 更新系统
sudo apt-get update
sudo apt-get upgrade
# 安装必要依赖
sudo apt-get install -y curl gnupg2 software-properties-common
2. MongoDB安装
bash# 导入MongoDB GPG Key
wget -qO - https://www.mongodb.org/static/pgp/server-6.0.asc | sudo apt-key add -
# 添加MongoDB源
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/6.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list
# 安装MongoDB
sudo apt-get update
sudo apt-get install -y mongodb-org
二、基础配置优化
1. mongod.conf配置
yaml# 编辑 /etc/mongod.conf
storage:
dbPath: /var/lib/mongodb
journal:
enabled: true
wiredTiger:
engineConfig:
cacheSizeGB: 4
systemLog:
destination: file
logAppend: true
path: /var/log/mongodb/mongod.log
net:
port: 27017
bindIp: 0.0.0.0
security:
authorization: enabled
2. 系统参数优化
bash# 编辑 /etc/sysctl.conf
vm.swappiness = 1
vm.dirty_ratio = 15
vm.dirty_background_ratio = 5
# 优化文件句柄限制
echo "mongodb soft nofile 64000" >> /etc/security/limits.conf
echo "mongodb hard nofile 64000" >> /etc/security/limits.conf
三、性能优化配置
1. WiredTiger存储引擎优化
yamlstorage:
wiredTiger:
engineConfig:
cacheSizeGB: 4
journalCompressor: snappy
collectionConfig:
blockCompressor: snappy
indexConfig:
prefixCompression: true
2. 索引优化
javascript// 创建复合索引
db.collection.createIndex({ "field1": 1, "field2": -1 })
// 创建文本索引
db.collection.createIndex({ "content": "text" })
// 创建地理空间索引
db.collection.createIndex({ "location": "2dsphere" })
四、集群配置
1. 副本集配置
yamlreplication:
replSetName: "rs0"
security:
keyFile: "/etc/mongodb/keyfile"
2. 分片集群配置
javascript// 配置分片
sh.enableSharding("database")
sh.shardCollection("database.collection", { "shardKey": 1 })
五、监控与维护
1. 性能监控
javascript// 查看数据库状态
db.serverStatus()
// 查看集合统计信息
db.collection.stats()
// 查看慢查询
db.getProfilingStatus()
2. 备份策略
bash# 创建备份
mongodump --db database --out /backup/
# 定时备份脚本
#!/bin/bash
backup_date=`date +%Y%m%d`
mongodump --db database --out /backup/$backup_date
六、常见问题优化
1. 内存优化
- 合理设置WiredTiger缓存
- 避免数据超出物理内存
- 监控内存使用情况
2. CPU优化
- 索引覆盖查询
- 避免全表扫描
- 合理使用聚合管道
七、安全加固
1. 访问控制
javascript// 创建管理员用户
use admin
db.createUser({
user: "adminUser",
pwd: "password",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
})
2. 网络安全
bash# 配置防火墙规则
ufw allow from 192.168.1.0/24 to any port 27017
最佳实践建议
- 性能优化清单
- 使用适当的分片键
- 创建必要的索引
- 优化查询模式
- 监控系统性能
- 运维建议
- 定期备份数据
- 监控系统资源
- 及时更新版本
- 建立故障预案
- 扩展性考虑
- 预留足够资源
- 规划扩容方案
- 评估性能瓶颈
本指南为您提供了MongoDB在云服务器环境下的完整部署和优化方案。记住,优化是一个持续的过程,需要根据实际应用场景和负载情况不断调整。建议在进行重要更改前先在测试环境中验证,确保数据库的稳定运行。
如果您的应用需求增长,可以考虑通过副本集或分片集群来扩展MongoDB的性能。同时,建议建立完善的监控系统,及时发现和解决潜在的性能问题。