Skip to content

MongoDB mongod 命令

mongod 命令基本语法

bash
mongod [options]

mongod 命令常用参数

1. 存储配置

参数描述示例
--dbpath指定数据文件存储目录--dbpath /data/mongodb
--storageEngine指定存储引擎--storageEngine wiredTiger
--journal.enabled启用或禁用 journal 日志--journal.enabled true
--journal.commitIntervalMsjournal 提交间隔,单位毫秒--journal.commitIntervalMs 100
--wiredTiger.engineConfig.cacheSizeGBWiredTiger 缓存大小,单位 GB--wiredTiger.engineConfig.cacheSizeGB 4

2. 网络配置

参数描述示例
--bindIp指定监听 IP 地址--bindIp 0.0.0.0
--port指定监听端口--port 27017
--maxIncomingConnections最大传入连接数--maxIncomingConnections 65536
--ssl.modeSSL/TLS 模式--ssl.mode requireSSL
--ssl.pemKeyFileSSL/TLS 证书文件路径--ssl.pemKeyFile /path/to/cert.pem

3. 安全配置

参数描述示例
--auth启用认证--auth
--clusterAuthMode集群认证模式--clusterAuthMode keyFile
--keyFile密钥文件路径,用于副本集和分片集群认证--keyFile /path/to/keyfile
--security.authorization授权模式--security.authorization enabled

4. 日志配置

参数描述示例
--logpath指定日志文件路径--logpath /var/log/mongodb/mongod.log
--logappend追加日志到现有文件--logappend
--verbosity日志详细程度,0-5--verbosity 0
--slowms慢查询阈值,单位毫秒--slowms 100
--profile性能分析级别--profile 1

5. 副本集配置

参数描述示例
--replSet副本集名称--replSet rs0
--oplogSizeMBoplog 大小,单位 MB--oplogSizeMB 10240

6. 分片集群配置

参数描述示例
--shardsvr启用分片服务器模式--shardsvr
--configsvr启用配置服务器模式--configsvr
--clusterRole集群角色--clusterRole shardsvr

mongod 命令使用示例

1. 基本启动

bash
# 基本启动,使用默认配置
mongod

# 指定数据目录和日志文件
mongod --dbpath /data/mongodb --logpath /var/log/mongodb/mongod.log --logappend

2. 启用认证

bash
# 启用认证和授权
mongod --auth --dbpath /data/mongodb --logpath /var/log/mongodb/mongod.log --logappend

3. 启动副本集节点

bash
# 启动副本集节点
mongod --replSet rs0 --dbpath /data/mongodb --logpath /var/log/mongodb/mongod.log --logappend

4. 启动分片集群组件

bash
# 启动分片服务器
mongod --shardsvr --replSet rs0 --dbpath /data/mongodb/shard1 --logpath /var/log/mongodb/shard1.log --logappend --port 27018

# 启动配置服务器
mongod --configsvr --replSet csrs --dbpath /data/mongodb/config --logpath /var/log/mongodb/config.log --logappend --port 27019

# 启动 mongos 路由服务器
mongos --configdb csrs/localhost:27019 --logpath /var/log/mongodb/mongos.log --logappend --port 27017

5. 启用 SSL/TLS

bash
# 启用 SSL/TLS
mongod --ssl.mode requireSSL --ssl.pemKeyFile /path/to/cert.pem --sslCAFile /path/to/ca.pem --dbpath /data/mongodb --logpath /var/log/mongodb/mongod.log --logappend

使用配置文件启动 mongod

1. 创建配置文件

yaml
# mongod.conf

# 系统日志配置
systemLog:
  destination: file
  path: /var/log/mongodb/mongod.log
  logAppend: true
  verbosity: 0

# 存储配置
storage:
  dbPath: /data/mongodb
  journal:
    enabled: true
    commitIntervalMs: 100
  wiredTiger:
    engineConfig:
      cacheSizeGB: 4
      journalCompressor: snappy
    collectionConfig:
      blockCompressor: snappy
    indexConfig:
      prefixCompression: true

# 网络配置
net:
  bindIp: 0.0.0.0
  port: 27017
  maxIncomingConnections: 65536

# 安全配置
security:
  authorization: enabled

# 副本集配置
replication:
  replSetName: rs0
  oplogSizeMB: 10240

# 操作分析配置
operationProfiling:
  slowOpThresholdMs: 100
  mode: slowOp

2. 使用配置文件启动

bash
# 使用配置文件启动 mongod
mongod --config /etc/mongod.conf

# 或使用 -f 选项
mongod -f /etc/mongod.conf

停止 mongod 进程

1. 使用 mongosh 停止

bash
# 连接到 MongoDB
mongosh

# 停止 MongoDB 实例
use admin
db.shutdownServer()

2. 使用 kill 命令停止

bash
# 查找 mongod 进程 ID
ps aux | grep mongod

# 发送 SIGTERM 信号(优雅停止)
kill <pid>

# 如果无法优雅停止,发送 SIGKILL 信号(强制停止)
kill -9 <pid>

3. 使用系统服务停止

bash
# Systemd 系统
systemctl stop mongod

# SysVinit 系统
service mongod stop

mongod 命令最佳实践

1. 使用配置文件

  • 建议使用配置文件管理 mongod 配置,便于维护和版本控制
  • 将配置文件存储在安全位置,限制访问权限
  • 定期备份配置文件

2. 安全配置

  • 启用认证和授权,保护数据库安全
  • 使用密钥文件进行副本集和分片集群认证
  • 配置 SSL/TLS 加密,保护数据传输安全
  • 限制网络访问,只允许信任的 IP 连接

3. 性能优化

  • 根据系统资源调整 WiredTiger 缓存大小
  • 配置合适的 journal 提交间隔
  • 使用合适的压缩算法,平衡压缩率和性能
  • 监控系统资源使用情况,根据需要调整配置

4. 日志管理

  • 配置合适的日志详细程度,避免日志过大
  • 启用慢查询日志,便于性能分析
  • 定期轮转日志,避免日志文件过大
  • 监控日志内容,及时发现问题

5. 高可用性

  • 使用副本集确保数据高可用性
  • 配置合适的 oplog 大小,支持时间点恢复
  • 定期备份数据,确保数据安全性
  • 测试故障转移,确保自动故障转移正常工作

常见问题(FAQ)

Q1: 如何查看 mongod 命令的所有参数?

A1: 可以使用以下命令查看 mongod 命令的所有参数:

bash
mongod --help

Q2: 如何查看 mongod 实例的运行状态?

A2: 可以使用以下方法查看 mongod 实例的运行状态:

  • 使用 systemctl status mongod(Systemd 系统)
  • 使用 service mongod status(SysVinit 系统)
  • 连接到 MongoDB,运行 db.runCommand({ serverStatus: 1 })

Q3: 如何修改正在运行的 mongod 实例的配置?

A3: 可以使用以下方法修改正在运行的 mongod 实例的配置:

  • 对于支持动态修改的配置,可以使用 db.adminCommand({ setParameter: 1, <parameter>: <value> }) 命令修改
  • 对于不支持动态修改的配置,需要修改配置文件并重启 mongod 实例

Q4: 如何调试 mongod 启动问题?

A4: 调试 mongod 启动问题的方法:

  • 检查日志文件,查找错误信息
  • 使用 --verbose 参数提高日志详细程度
  • 检查配置文件中的设置是否正确
  • 检查数据目录和日志目录的权限
  • 检查端口是否被占用

Q5: 如何优化 mongod 实例的性能?

A5: 优化 mongod 实例性能的方法:

  • 根据系统资源调整 WiredTiger 缓存大小
  • 配置合适的 journal 提交间隔
  • 使用合适的压缩算法
  • 优化索引设计
  • 监控慢查询,优化查询语句
  • 根据需要调整系统资源

Q6: 如何确保 mongod 实例的安全性?

A6: 确保 mongod 实例安全性的方法:

  • 启用认证和授权
  • 使用 SSL/TLS 加密
  • 限制网络访问
  • 定期更新 MongoDB 版本
  • 定期进行安全扫描和评估
  • 遵循安全最佳实践配置 MongoDB