问题标签 [mongorestore]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1767 浏览

mongodb - mongorestore 不会跳过没有 /stopOnError 标志的错误

我使用 mongo 2.6.4 / Windows Server 2012 R2。

Mongodump 生成了两个转储文件: mongodump -d mydb

  • 事务.bson
  • transaction.metadata.json

我试图通过 mongorestore (2.6.4) 恢复这些信息:

mongorestore --host 127.0.0.1 --port 27018 --collection transaction --db mydb

但是工具返回错误(进度〜23%):

2015-08-17T19:45:51.844+0400 Failed: restore error: mydb.transaction: error restoring from F:\restore\transaction.bson: insertion error: Client Error: bad object in message: invalid bson type in object with _id: ObjectId('528dc7c03599b01214d17469')

所以我决定用标志来扩展它:

mongorestore --host 127.0.0.1 --port 27018 --collection transaction --db mydb --drop --noIndexRestore --noOptionsRestore --noobjcheck --filter "{'_id' : { $ne: '528dc7c03599b01214d17469' }}" F:/restore/transaction.bson

并再次得到同样的错误。

所以我尝试使用 3.0 版本的 mongorestore:

mongorestore /host 127.0.0.1 /port 27018 /collection transaction /db mydb /drop /noIndexRestore /noOptionsRestore /keepIndexVersion F:/restore/transaction.bson

并再次得到同样的错误。

我希望它有所帮助,因为我没有使用 /stopOnError 标志。但事实并非如此。它一直以约 23% 的速度失败。

这是 MongoDB 日志的一部分:

2015-08-17T19:14:32.447+0400 [conn8] Assertion: 10307:Client Error: bad object in message: invalid bson type in object with _id: ObjectId('528dc7c03599b01214d17469') 2015-08-17T19:14:32.532+0400 [conn6] insert mydb.transaction ninserted:10000 keyUpdates:0 numYields:0 locks(micros) w:181893 181ms 2015-08-17T19:14:32.743+0400 [conn9] insert mydb.transaction ninserted:10000 keyUpdates:0 numYields:0 locks(micros) w:211264 211ms 2015-08-17T19:14:32.921+0400 [conn7] insert mydb.transaction ninserted:10000 keyUpdates:0 numYields:0 locks(micros) w:176525 177ms 2015-08-17T19:14:36.250+0400 [conn8] mongod.exe ...\src\mongo\util\stacktrace.cpp(169) mongo::printStackTrace+0x43 2015-08-17T19:14:36.250+0400 [conn8] mongod.exe ...\src\mongo\util\log.cpp(127) mongo::logContext+0x9c 2015-08-17T19:14:36.250+0400 [conn8] mongod.exe ...\src\mongo\util\assert_util.cpp(183) mongo::msgasserted+0xfb 2015-08-17T19:14:36.250+0400 [conn8] mongod.exe ...\src\mongo\util\assert_util.cpp(174) mongo::msgasserted+0x13 2015-08-17T19:14:36.250+0400 [conn8] mongod.exe ...\src\mongo\db\dbmessage.cpp(116) mongo::DbMessage::nextJsObj+0x11f 2015-08-17T19:14:36.250+0400 [conn8] mongod.exe ...\src\mongo\db\instance.cpp(898) mongo::receivedInsert+0x18f 2015-08-17T19:14:36.250+0400 [conn8] mongod.exe ...\src\mongo\db\instance.cpp(484) mongo::assembleResponse+0x7c9 2015-08-17T19:14:36.250+0400 [conn8] mongod.exe ...\src\mongo\db\db.cpp(202) mongo::MyMessageHandler::process+0x111 2015-08-17T19:14:36.250+0400 [conn8] mongod.exe ...\src\mongo\util\net\message_server_port.cpp(210) mongo::PortMessageServer::handleIncomingMsg+0x671 2015-08-17T19:14:36.250+0400 [conn8] mongod.exe ...\src\third_party\boost\libs\thread\src\win32\thread.cpp(185) boost::'anonymous namespace'::thread_start_function+0x21 2015-08-17T19:14:36.250+0400 [conn8] mongod.exe f:\dd\vctools\crt_bld\self_64_amd64\crt\src\threadex.c(314) _callthreadstartex+0x17 2015-08-17T19:14:36.250+0400 [conn8] mongod.exe f:\dd\vctools\crt_bld\self_64_amd64\crt\src\threadex.c(292) _threadstartex+0x7f 2015-08-17T19:14:36.250+0400 [conn8] KERNEL32.DLL BaseThreadInitThunk+0xd 2015-08-17T19:14:36.250+0400 [conn8] 2015-08-17T19:14:36.255+0400 [conn8] insert mydb.transaction keyUpdates:0 exception: Client Error: bad object in message: invalid bson type in object with _id: ObjectId('528dc7c03599b01214d17469') code:10307 numYields:0 0ms

我想从这个文件中读取数据,但它很大(18 Gb)。跳过一些记录也没关系。

有谁知道如何解决这个问题?

0 投票
1 回答
472 浏览

mongodb - 恐慌:运行时错误:使用 mongorestore.exe 时切片超出范围?

当我尝试使用 mongorestore.exe 恢复某些集合时,我得到了那个错误。

这与文件名太长有关吗?较小的集合似乎可以恢复正常,但较大的集合会因该错误而失败。

0 投票
1 回答
3747 浏览

mongodb - MongoDB - 使用 oplog 跨不同主机、数据库转储和恢复

是否可以使用 mongodump 并将其 mongorestore 到具有不同数据库名称的不同主机,并启用 oplog?

来自:mongodb://user:password@source-hostname:source-port/db1

到:mongodb://user:password@dest-hostname:dest-port/db5

当我在源 MongoDB 上使用 oplog 执行 mongodump 时,它会转储整个数据库。

现在进行还原,我想还原到不同的主机名,并且 db-name 也不同。有没有办法使用 oplogReplay 将数据恢复到这个数据库?

如果我使用 oplogReplay,我会收到以下错误

我不想进行完全恢复,因为它会将 db-name 创建为 db1,而我想使用 db5。此外,此目标主机上已经有多个数据库,我不想用另一个新数据库轰炸。

关于这个问题有什么建议吗?

0 投票
2 回答
1097 浏览

mongodb - 想不通为什么迁移后 mongo 数据库变大了?

我是 mongodb 的新手。我有一个本地服务器和一个远程服务器。mongodump使用/ tools将 mongo 数据库从本地服务器迁移到远程服务器mongorestore后,我发现远程服务器上的数据库大小变大了。

这是我的样本:

在本地服务器上(Ubuntu 14.04.2 LTS,mongo 3.0.5):

在远程服务器上(CentOS 6.7,mongo 2.4.3):

我还检查了一个要比较的集合的状态,计数相同,但大小(如indexSizetotalIndexSize等)发生了变化:

这是本地服务器上收集的状态:

这是远程服务器上收集的状态:

如果mongodump/mongorestore是迁移 mongo 数据库的好方法?

0 投票
2 回答
1239 浏览

mongodb - 恢复 mongodump 数据库备份,正确的流程是什么?

我正在使用 MongoDB 执行我的第一步,但仍然迷路。我已阅读此处的文档,但我无法找到正确的步骤来导入|恢复数据库。我有一个 .tgz 文件,我已经解压缩了它。命令的输出ll如下:

我只需要恢复 pdone 数据库。如何?

0 投票
1 回答
967 浏览

mongodb - 尝试使用 mongorestore 恢复 fs.chunks 集合 (GridFS) 时出现 AssertionException

mongorestore无法恢复包含名为“fs.chunks”(由GridFS使用)的集合的转储。

看起来这个集合中的块太大了(~32MB)。

日志:

您对如何告诉 mongo 有任何想法:

  • 选项 1:调整块大小
  • 选项 2:接受大于 16MB 的块

笔记:

  • 蒙戈版本:3.1.9
  • 转储是使用 mongodump 工具生成的
  • 所有其他集合都已成功恢复
0 投票
6 回答
10336 浏览

mongodb - Mongodump 之后,调用 MongoRestore 挂起

我们正在尝试在一个相对较小的数据库上做一个简单的 MongoDump。

我们的步骤很简单:

  1. 出口

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

  3. 在目标机器上导入

MongoDump 完美执行。

DB drop 也是如此:

另一方面,调用 mongoRestore 后

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

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

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

0 投票
1 回答
105 浏览

mongodb - mongorestore 停止收集

我正在通过运行以下命令从转储中恢复 mongodb 数据库

它运行并显示以下行

它止步于此。无法弄清楚问题所在。

0 投票
2 回答
10404 浏览

mongodb - mongo3.0 恢复失败并出现错误失败:恢复错误:插入错误:EOF

我正在尝试使用 mongorestore 还原具有 100 个集合(800GB)的数据库,该数据库是 mongo 2.4.4 的备份。我使用了以下命令:

我正在使用 batchSize =1000, 500, 100 来尝试使其工作。我在 10-15 次收集后遇到插入错误。当我收到此错误时,它几乎完美地运行了近一个半小时。

失败:恢复错误:bp_prod079.ANEpisodeBreakdown:从/data/backup/2015-11-28/bp_prod079/ANEpisodeBreakdown.bson恢复错误:插入错误:EOF

0 投票
2 回答
7423 浏览

mongodb - 错误:未在 db 上授权执行命令

我正在尝试使用 mongo 3.0.7 中的 mongorestore 恢复一个大文件。prod079 文件夹下的所有文件都已成功恢复,除了一个名为 system.users 的文件。用于恢复的命令是

上面的命令从同一个文件夹中恢复了 400GB 的数据,但似乎仅凭这个文件就失败了。

我收到这样的错误:

错误:在 prod079 上未授权执行命令 { 插入:“system.users”,文档:[ { _id:ObjectId('531e5251864fb4e84b'),密码:“xxxxxxxx”,角色:[“dbAdmin”,“readWrite”,“userAdmin " ], 用户: "ab" } ], writeConcern: { getLastError: 1, w: 1 }, 有序: false }

2015-12-10T13:20:49.196-0500 错误:在 prod079 上未授权执行命令 { 插入:“system.users”,文档:[ { _id:ObjectId('531e5251864fb4e84c'),用户:“abuser”,密码: “xxxxxxxx”,角色:[“read”]}],writeConcern:{getLastError:1,w:1},ordered:false}

2015-12-10T13:20:49.196-0500 错误:在 prod079 上未授权执行命令 { 插入:“system.users”,文档:[ { _id:ObjectId('5452840f169afa3a2'),用户:“asmeta”,密码: “xxxxxxxx”,角色:[“read”]}],writeConcern:{getLastError:1,w:1},ordered:false}

所以基本上我得到了很多这样的错误。我尝试在 stackoverflow 和 google 上寻找类似的错误,但我能找到的只是包含 -d 或包含 localhost。然后我发现一个帖子说我没有为 testdba 用户授予 userAdmin/userAdminAnyDatabase 权限。这次我尝试以具有 userAdmin/userAdminAnyDatabase 权限的管理员用户身份运行。我使用的命令是:

这次我遇到了不同类型的错误。它说 :

2015-12-10T13:17:59.940-0500 失败:连接到数据库服务器时出错:服务器在 SASL 身份验证步骤中返回错误:身份验证失败。

现在我真的很困惑正在发生的事情以及为什么我独自面对这个文件的问题。另外,当我尝试以管理员身份恢复时,我无法理解为什么会出现如此不同的错误。

任何建议/帮助将不胜感激。