在CentOS上使用MongoDB时,遵循最佳实践是非常重要的,以确保数据库的性能、安全性和可维护性。以下是一些关键的最佳实践:
安装MongoDB
-
使用YUM仓库安装:
- 创建MongoDB的YUM仓库文件:
sudo vi /etc/yum.repos.d/mongodb-org-6.0.repo
在文件中添加以下内容(适用于MongoDB 6.0版本):[mongodb-org-6.0] name=MongoDB Repository baseurl=https://repo.mongodb.org/yum/redhat/8/mongodb-org/6.0/x86_64/ gpgcheck=1 enabled=1 gpgkey=https://www.mongodb.org/static/pgp/server-6.0.asc
- 安装MongoDB:
sudo yum install -y mongodb-org
- 启动MongoDB服务:
sudo systemctl start mongod
- 设置MongoDB开机自启:
sudo systemctl enable mongod
- 检查MongoDB状态:
sudo systemctl status mongod
- 创建MongoDB的YUM仓库文件:
配置优化
- 修改配置文件:
- 启用访问控制:
security: authorization: enabled
- 修改用户限制:
sudo vi /etc/security/limits.conf
加入如下内容:mongod soft nofiles 64000 mongod soft nproc 64000
- 创建测试的数据库和用户:
use admin db.createUser({ user: "admin", pwd: "your_password", roles: [ { role: "userAdminAnyDatabase", db: "admin" }, { role: "readWriteAnyDatabase", db: "admin" } ] })
- 启用访问控制:
性能优化
- 硬件和操作系统优化:
- 使用SSD硬盘。
- 关闭传输页缓存。
- 优化内核参数,如调整Max processes或files,关闭透明大页功能,修改磁盘调度算法等。
- MongoDB软件配置优化:
- 调整WiredTiger缓存大小:
storage: wiredTiger: engineConfig: cacheSizeGB: value
- 分配足够的oplog空间:
replication: oplogSizeMB: value
- 启用Log Rotation:
systemLog: destination: file logAppend: true path: /var/log/mongodb/mongod.log logRotate: reindex
- 设置journal日志刷新时间和flush时间:
replication: journal: commitIntervalMs: value syncPeriodSecs: value
- 连接内存优化:
operationProfiling: mode: slowOp
- 连接数优化:
sudo sysctl -w fs.file-max=100000 sudo sysctl -w net.ipv4.tcp_tw_reuse=1
- 关闭Transparent Huge Pages:
echo never | sudo tee /proc/sys/vm/dirty_background_ratio echo 100 | sudo tee /proc/sys/vm/dirty_ratio
- 调整WiredTiger缓存大小:
安全设置
- 启用身份验证: 编辑配置文件
/etc/mongod.conf
,在security
部分设置authorization: enabled
,然后重启MongoDB服务以应用配置变更:sudo systemctl restart mongod
- 创建管理员用户: 使用MongoDB shell连接到MongoDB:
mongo -u root -p --authenticationDatabase "admin"
创建管理员用户并为其分配角色和权限:use admin db.createUser({ user: "admin", pwd: "your_password", roles: [ { role: "root", db: "admin" } ] })
- 限制远程访问: 在
/etc/mongod.conf
配置文件中添加bindIp
参数,指定允许连接的IP地址或主机名:net: port: 27017 bindIp: 192.168.1.100 # 替换为你的服务器IP地址
- 加密通信: 生成或获取有效的SSL证书和私钥文件,在
/etc/mongod.conf
配置文件中添加以下配置并重启服务:net: ssl: mode: requireSSL PEMKeyFile: /path/to/mongodb-cert.pem
监控和维护
- 定期监控性能指标: 使用MongoDB提供的工具如
mongostat
和mongotop
定期检查系统性能指标。 - 分析查询执行计划: 使用
explain()
方法分析查询的执行计划,根据分析结果优化索引。
通过遵循这些最佳实践,您可以在CentOS上高效、安全地运行MongoDB。