温馨提示×

centos mongodb使用最佳实践

小樊
65
2025-05-23 00:19:35
栏目: 云计算

在CentOS上使用MongoDB时,遵循最佳实践是非常重要的,以确保数据库的性能、安全性和可维护性。以下是一些关键的最佳实践:

安装MongoDB

  • 使用YUM仓库安装

    1. 创建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
      
    2. 安装MongoDB:
      sudo yum install -y mongodb-org
      
    3. 启动MongoDB服务:
      sudo systemctl start mongod
      
    4. 设置MongoDB开机自启:
      sudo systemctl enable mongod
      
    5. 检查MongoDB状态:
      sudo systemctl status mongod
      

配置优化

  • 修改配置文件
    • 启用访问控制:
      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
      

安全设置

  • 启用身份验证: 编辑配置文件 /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提供的工具如 mongostatmongotop 定期检查系统性能指标。
  • 分析查询执行计划: 使用 explain() 方法分析查询的执行计划,根据分析结果优化索引。

通过遵循这些最佳实践,您可以在CentOS上高效、安全地运行MongoDB。

0