阅读量:89
在Linux系统上高效配置MongoDB涉及多个步骤,包括安装、配置、优化以及设置开机自启等。以下是详细的配置步骤:
安装MongoDB
- 创建数据目录和日志目录:
sudo mkdir -p /var/lib/mongodb
sudo mkdir -p /var/log/mongodb
sudo chown -R $(whoami) /var/lib/mongodb
sudo chown -R $(whoami) /var/log/mongodb
- 下载并解压MongoDB安装包:
wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-ubuntu1604-4.2.8.tgz
tar -zxvf mongodb-linux-x86_64-ubuntu1604-4.2.8.tgz
sudo mv mongodb-linux-x86_64-ubuntu1604-4.2.8 /usr/local/mongodb
- 配置环境变量:
echo 'export PATH=/usr/local/mongodb/bin:$PATH' >> ~/.bashrc
source ~/.bashrc
- 创建配置文件:
sudo vim /etc/mongod.conf
在文件中添加以下内容:
dbpath=/var/lib/mongodb
logpath=/var/log/mongodb/mongod.log
logappend=true
port=27017
fork=true
auth=false # 可选,用于禁用认证
- 启动MongoDB服务:
sudo mongod --config /etc/mongod.conf
- 设置开机自启:
sudo vim /etc/systemd/system/mongodb.service
在文件中添加以下内容:
[Unit]
Description=High-performance, schema-free document-oriented database
After=network.target
[Service]
User=mongodb
Group=mongodb
ExecStart=/usr/local/mongodb/bin/mongod --config /etc/mongod.conf
Restart=always
[Install]
WantedBy=multi-user.target
重新加载systemd管理器配置并启动MongoDB服务:
sudo systemctl daemon-reload
sudo systemctl start mongodb
sudo systemctl enable mongodb
优化MongoDB性能
- 关闭atime:
sudo sysctl -w vm.dirty_background_ratio=100
sudo sysctl -w vm.dirty_ratio=100
- 调整文件描述符限制:
ulimit -n 20000
- 禁用透明页面:
echo never | sudo tee /sys/kernel/mm/transparent_hugepage/enabled
- 优化操作系统设置:
- 关闭防火墙
- 禁用SELinux(如果可能)
- 调整MongoDB配置:
sudo vim /etc/mongod.conf
根据需要调整以下参数:
net.maxIncomingConnections:调整最大 incoming connections 数。net.maxOutgoingConnections:调整最大 outgoing connections 数。storage.wiredTiger.engineConfig.cacheSizeGB:调整 WiredTiger 存储引擎的缓存大小。operationProfiling.mode:开启操作分析以监控慢查询。replication.replSetName:如果使用副本集,设置副本集名称。
- 索引优化:
为经常用于查询的字段创建索引:
db.collection.createIndex({ field: 1 })
- 监控和诊断:
使用MongoDB自带的工具 mongostat 和 mongotop 监控数据库性能。还可以使用第三方工具如 Percona Monitoring and Management (PMM) 进行更详细的监控和诊断。
- 定期备份:
使用 mongodump 和 mongorestore 工具进行备份和恢复。
- 升级MongoDB版本:
考虑升级到最新的稳定版本以获得性能改进和bug修复。
通过以上步骤,您可以在Linux环境下高效地配置和优化MongoDB服务。