mongorestore无限期挂起

时间:2018-01-09 14:54:47

标签: mongodb backup mongorestore

我尝试使用gzip文件中的mongorestore恢复数据库。数据库大小约为89MB,gzip文件大约为4.4MB。

但是,还原会无限期挂起并显示错误消息。我该如何解决这个问题?

我运行的命令是:

mongorestore --gzip --archive ./my-db.gz --drop -u admin --authenticationDatabase admin --verbose=5

因此反应如下:

2018-01-09T15:47:45.089+0100    standard input is a terminal; reading password from terminal
Enter password:

2018-01-09T15:47:46.508+0100    will listen for SIGTERM, SIGINT, and SIGKILL
2018-01-09T15:47:46.509+0100    checking options
2018-01-09T15:47:46.509+0100        dumping with object check disabled
2018-01-09T15:47:46.527+0100    connected to node type: standalone
2018-01-09T15:47:46.528+0100    standalone server: setting write concern w to 1
2018-01-09T15:47:46.528+0100    using write concern: w='1', j=false, fsync=false, wtimeout=0

在这里,它会永远停止。数据库已成功创建,但大小仍为0b

奇怪的是,MongoDB Compass中的数据库概述显示了数据库中具有~28k文档的单个集合,这是我所期望的,平均大小和其他元数据显然是正确的,但没有任何东西可以读取。

我已从实时群集中导出数据库,并尝试导入到我的本地开发环境,通过Docker运行单个实例。

我应该从哪里离开?

感谢。

3 个答案:

答案 0 :(得分:9)

我找到了解决方案。

如果我用--archive ./my-db.gz运行命令,我就会遇到死锁。如果我--archive=./my-db.gz,它会正确恢复(即需要等号)。

我正在运行MacOSX High Sierra(10.13.2),并安装了brew中的MongoDB;版本:

mongorestore version: r3.4.1
git version: 4a0fbf5245669b55915adf7547ac592223681fe1
Go version: go1.7.5
   os: darwin
   arch: amd64
   compiler: gc
OpenSSL version: OpenSSL 1.0.2k  26 Jan 2017

答案 1 :(得分:1)

虽然很奇怪,但似乎是正确的行为

docs退出

  To restore from the standard input, run mongorestore with the --archive option but omit the filename.

因此程序正在等待将归档通过管道传输到标准输入

所以它可以像这样

mongorestore --gzip --archive=./my-db.gz --drop -u admin --authenticationDatabase admin --verbose=5

mongorestore --gzip --archive --drop -u admin --authenticationDatabase admin --verbose=5 < my-db.gz

答案 2 :(得分:0)

对我来说,该死的东西被卡在某个百分比上约5分钟,然后自己增加。不知道为什么:/网络活动良好,磁盘也良好。不知道如何进一步调试它。