在Mongodump之后,调用MongoRestore会挂起

Urb*_*leg 7 mongodb nosql mongorestore mongodump

我们试图在一个相对较小的数据库上做一个简单的MongoDump.

我们的步骤很简单:

  1. 出口

  2. 从目标机器中删除现有数据库

  3. 导入目标机器

MongoDump完美执行.

mongodump --out=/root/mongo-prod
Run Code Online (Sandbox Code Playgroud)

数据库丢弃也是如此:

mongo db_name --eval "db.dropDatabase()"
Run Code Online (Sandbox Code Playgroud)

另一方面,在调用mongoRestore之后

mongorestore --stopOnError --drop --db db_name /root/mongo-prod-{{ build }}/db_name/
Run Code Online (Sandbox Code Playgroud)

导入过程开始,并挂起3个特定的集合,并重复以下错误:

    no collection options to restore
restoring db_name.Collection4 from file /root/mongo-prod-31/db_name/Collection4.bson
        file /root/mongo-prod-31/db_name/Collection4.bson is 56625 bytes
using 1 insertion workers
[########################]                 db_name.Collection1  106.7 KB/106.7 KB  (100.0%)
[########################]                db_name.Collection2    63.5 KB/63.5 KB  (100.0%)
[######..................]                db_name.Collection3     6.7 MB/25.9 MB   (25.8%)
[########################]  db_name.Collection4    55.3 KB/55.3 KB  (100.0%)

[########################]                 db_name.Collection1  106.7 KB/106.7 KB  (100.0%)
[########################]                db_name.Collection2    63.5 KB/63.5 KB  (100.0%)
[######..................]                db_name.Collection3     6.7 MB/25.9 MB   (25.8%)
[########################]  db_name.Collection4    55.3 KB/55.3 KB  (100.0%)
Run Code Online (Sandbox Code Playgroud)

*******这无限循环*******

ps添加--repair到mongodump命令,在mongorestore上创建一个不同的错误:

  Failed: restore error: db_name.Collection1: error restoring from /root/mongo-prod-33/db_name/Collection1.bson: insertion error: E11000 duplicate key error index: db_name.Collection1.$_id_ dup key: { : ObjectId('5651802de4b0293285f7f508') }
Run Code Online (Sandbox Code Playgroud)

小智 25

我只花了一个小时:

从档案中读取

--archive=/backup...
Run Code Online (Sandbox Code Playgroud)

忽略存档参数并等待标准输入

--archive /backup
Run Code Online (Sandbox Code Playgroud)

似乎参数适用于 arg 值或 arg=value,只是不适用于存档...

  • RTFM。我也有类似的问题。但在文档中,语法非常清楚:`--archive <=file|null>`。使用“=”符号从文件中读取。 (2认同)

Art*_*nko 6

显然,这个问题与MongoDB 编写问题有关.从MongoDB文档(版本3.2):

写入问题描述了MongoDB请求的确认级别,用于对独立mongod或副本集或分片集群的写入操作.

在副本集配置中,此选项定义在认为成功之前需要写入多少副本写入操作.

mongorestore实用程序将默认写入关注设置为多数.这样的值需要确认写操作已经传播到大多数投票节点,包括主节点.如果您有> = 1/2的副本集(投票!)成员下台,mongorestore将永远挂起,等待大多数成员的确认.来自文档:

如果未指定wtimeout选项且写入关注级别无法实现,则写入操作将无限期阻止.

如果仍需要执行数据库还原,只需--writeConcern '{w:0}'mongorestore命令中指定.这将禁用对当前mongo连接的写入操作的确认,并且您将能够还原数据库.

以下是文档链接:https: //docs.mongodb.com/v3.2/reference/write-concern

PS同样可以接受最新的MongoDB版本3.4.


Vas*_*007 5

我在副本集上遇到了相同的问题,我试图在辅助副本(在副本集中)关闭时在主副本上还原。我开始中学,然后它开始成功还原。


cig*_*ig0 0

我遇到了同样的问题,可以通过扩大wiredTiger的缓存来解决它:

# 猫 /etc/mongod.conf

..
  wiredTiger:
    engineConfig:
      cacheSizeGB: 2
..
Run Code Online (Sandbox Code Playgroud)

(之前设置为1GB)

华泰