MacOS High Sierra下mongodump无法运行,恢复命令终端卡顿求助
解决MongoDB 3.6.3中mongodump卡顿无反应的问题
嘿,我来帮你排查下这个问题——这种mongodump卡住没反应的情况我之前碰到过好几次,大概率是几个常见的配置或环境问题导致的,咱们一步步来解决:
1. 先确认mongod服务是否正常运行
mongodump必须连接到正在运行的mongod实例才能工作,如果mongod没启动或者连接不上,就会一直卡住:
- 打开新终端,输入
ps aux | grep mongod查看是否有mongod进程在运行; - 如果没找到进程,先启动mongod:
mongod --dbpath /你创建数据库时指定的路径,等终端显示waiting for connections on port 27017后,再去执行mongodump命令。
2. 检查mongodump的命令参数是否正确
很多时候卡顿是因为参数不明确,导致mongodump一直在等待连接:
- 试试带完整连接参数的命令,明确指定目标数据库:
mongodump --host localhost --port 27017 --db 你的数据库名称 - 如果你的mongod开启了认证,必须加上用户名和密码参数:
mongodump --host localhost --port 27017 --db 你的数据库名称 --username 你的用户名 --password 你的密码
3. 检查磁盘空间与目录权限
mongodump默认会把备份文件写到当前终端所在的dump目录,如果该目录没有写入权限,或者磁盘空间不足,就会静默卡住:
- 查看当前目录权限:
ls -ld .,确保你的用户拥有写权限; - 检查磁盘剩余空间:
df -h,确认空间足够容纳备份数据; - 可以手动指定一个有写权限的输出目录,比如:
mongodump --db 你的数据库名称 --out /Users/你的用户名/Desktop/mongo_backup
4. 针对MongoDB 3.6.3的特定优化
3.6.3版本有几个和mongodump相关的已知小问题,试试这些参数:
- 如果你的集合里有大量大文档,强制使用表扫描备份:
mongodump --db 你的数据库名称 --forceTableScan - 要是使用默认的WiredTiger存储引擎,临时减少mongod的缓存占用,避免和mongodump抢资源:
启动mongod后再执行mongodump。mongod --dbpath 你的数据库路径 --wiredTigerCacheSizeGB 1
5. 查看mongod日志找线索
如果上面的方法都没用,去查看mongod的日志文件(默认在你的dbpath目录下的mongod.log),里面会记录连接请求、错误信息:
- 实时查看日志:
tail -f /你的数据库路径/mongod.log,然后运行mongodump,观察日志里是否有新的报错或异常信息,这能帮你定位具体问题。
内容的提问来源于stack exchange,提问作者Evelin Ponce
相关产品推荐
相关产品推荐

