外观
MongoDB mongod 命令
mongod 命令基本语法
bash
mongod [options]mongod 命令常用参数
1. 存储配置
| 参数 | 描述 | 示例 |
|---|---|---|
--dbpath | 指定数据文件存储目录 | --dbpath /data/mongodb |
--storageEngine | 指定存储引擎 | --storageEngine wiredTiger |
--journal.enabled | 启用或禁用 journal 日志 | --journal.enabled true |
--journal.commitIntervalMs | journal 提交间隔,单位毫秒 | --journal.commitIntervalMs 100 |
--wiredTiger.engineConfig.cacheSizeGB | WiredTiger 缓存大小,单位 GB | --wiredTiger.engineConfig.cacheSizeGB 4 |
2. 网络配置
| 参数 | 描述 | 示例 |
|---|---|---|
--bindIp | 指定监听 IP 地址 | --bindIp 0.0.0.0 |
--port | 指定监听端口 | --port 27017 |
--maxIncomingConnections | 最大传入连接数 | --maxIncomingConnections 65536 |
--ssl.mode | SSL/TLS 模式 | --ssl.mode requireSSL |
--ssl.pemKeyFile | SSL/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 |
--oplogSizeMB | oplog 大小,单位 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 --logappend2. 启用认证
bash
# 启用认证和授权
mongod --auth --dbpath /data/mongodb --logpath /var/log/mongodb/mongod.log --logappend3. 启动副本集节点
bash
# 启动副本集节点
mongod --replSet rs0 --dbpath /data/mongodb --logpath /var/log/mongodb/mongod.log --logappend4. 启动分片集群组件
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 270175. 启用 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: slowOp2. 使用配置文件启动
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 stopmongod 命令最佳实践
1. 使用配置文件
- 建议使用配置文件管理 mongod 配置,便于维护和版本控制
- 将配置文件存储在安全位置,限制访问权限
- 定期备份配置文件
2. 安全配置
- 启用认证和授权,保护数据库安全
- 使用密钥文件进行副本集和分片集群认证
- 配置 SSL/TLS 加密,保护数据传输安全
- 限制网络访问,只允许信任的 IP 连接
3. 性能优化
- 根据系统资源调整 WiredTiger 缓存大小
- 配置合适的 journal 提交间隔
- 使用合适的压缩算法,平衡压缩率和性能
- 监控系统资源使用情况,根据需要调整配置
4. 日志管理
- 配置合适的日志详细程度,避免日志过大
- 启用慢查询日志,便于性能分析
- 定期轮转日志,避免日志文件过大
- 监控日志内容,及时发现问题
5. 高可用性
- 使用副本集确保数据高可用性
- 配置合适的 oplog 大小,支持时间点恢复
- 定期备份数据,确保数据安全性
- 测试故障转移,确保自动故障转移正常工作
常见问题(FAQ)
Q1: 如何查看 mongod 命令的所有参数?
A1: 可以使用以下命令查看 mongod 命令的所有参数:
bash
mongod --helpQ2: 如何查看 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
