也许我对如何运作有完全的误解mongodump,但除了返回JavaScript execution failed: SyntaxError: Unexpected identifier错误之外我似乎无法做任何事情.
这是我正在做的事情:
mongodump --db mydb并得到了上述错误mongodump和mongoexport,都具有相同的问题我在这做错了什么?
我的MongoDB副本集备份有一个奇怪的问题.我有2台服务器(一台主服务器和一台辅助服务器),我每2小时运行一次备份任务.
我用这个: mongodump.exe --db MyBase --out "d:\Backups"
但是,当我运行此备份时,我的客户端应用程序(c#)会抛出这样的错误:
MongoDB.Driver.MongoConnectionException:无法连接到与读取首选项主要匹配的副本集的成员
我认为mongodump在客户端应用程序上没有这样的影响.所以,那就是说.
我想仅在辅助服务器上强制执行备份操作.我该怎么办?运行的命令是什么?
谢谢您的帮助.
我自己就这样做了(因为RockMongo导出和导入已损坏)所以只是发布在这里.
请注意,这是针对MongoDB版本2.4.9以及相应版本的mongodump和mongorestore.
在尝试使用来自大约50亿个数据库的查询来运行数据库转储时,进度条时间似乎表明该转储不会在任何合理的时间(超过100天)内完成。查询似乎在0%处结束(大约22个小时后)后也冻结了–后一行是metas.json行。
转储行是:
mongodump -h myHost -d myDatabase -c mycollection --query "{'cr' : {\$gte: new Date(1388534400000)}, \$or: [ { 'tln': { \$lte: 0., \$gte: -100.}, 'tlt': { \$lte: 100, \$gte: 0} }, { 'pln': { \$lte: 0., \$gte: -100.}, 'plt': { \$lte: 100, \$gte: 0} } ] }"
Run Code Online (Sandbox Code Playgroud)
我的最后几行输出是(键入,因为我还不能发布图像。)
[timestamp] Collection File Writing Progress: 10214400/5066505869 0% (objects)
[timestamp] Collection File Writing Progress: 10225100/5066505869 0% (objects)
[timestamp] 10228391 objects
[timestamp] Metadata for database.collection to dump/database/collection.metadata.json
Run Code Online (Sandbox Code Playgroud)
是否有任何有助于提高性能的想法,或有关为什么要花这么长时间的想法?
我们试图在一个相对较小的数据库上做一个简单的MongoDump.
我们的步骤很简单:
出口
从目标机器中删除现有数据库
导入目标机器
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 …Run Code Online (Sandbox Code Playgroud) 我有一个.bson来自MongoDB转储的文件.转储还会生成一个.metadata.json似乎包含索引定义的文件.
{
"options": {},
"indexes": [
{
"v": 1,
"key": {
"_id": 1
},
"name": "_id_",
"ns": "test.oneMillionDocuments"
}
]
}
Run Code Online (Sandbox Code Playgroud)
我假设从.bson文件中恢复不包括索引.
.metadata.json文件?我需要单独恢复吗?我的恢复完成了以下几行:
2016-02-06T19:18:56.397+0000 [#######################.] test2.oneMillionRecordsRestore 9.7 GB/9.7 GB (99.5%)
2016-02-06T19:18:58.475+0000 restoring indexes for collection test2.oneMillionRecordsRestore from metadata
2016-02-06T19:18:58.485+0000 finished restoring test2.oneMillionRecordsRestore (1000000 documents)
2016-02-06T19:18:58.488+0000 done
Run Code Online (Sandbox Code Playgroud)
有一条线说它正在恢复索引,但专门引用该.metadata.json文件.
目前,我有一个旧版本的mongo,即2.6在我的系统上运行.我已经将我的网站投入生产并拥有大量客户数据.我计划升级到mongo 3.2.
所以,我的问题是mongo v3.2的 mongorestore是否与v2.6的数据转储一起工作?或者,它是否会产生问题?
任何答案都是无价的!谢谢
我想从.gz文件导入转储数据。
文件的位置为home/Alex/Documents/Abc/dump.gz,db的名称为"Alex"。
我试过了 mongorestore --gzip --db "Alex" /home/Alex/Documents/Abc/dump.gz
但是显示错误:
2018-10-31T12:54:58.359+0530 the --db and --collection args should
only be used when restoring from a BSON file. Other uses are
deprecated and will not exist in the future; use --nsInclude instead
2018-10-31T12:54:58.359+0530 Failed: file
/home/Alex/Documents/Abc/dump.gz does not have .bson extension.
Run Code Online (Sandbox Code Playgroud)
如何导入?
mongorestore使用大型 MongoDB 数据库运行命令时收到以下错误。
完成备份的机器:
db version v4.2.0
git version: a4b751dcf51dd249c5865812b390cfd1c0129c30
OpenSSL version: OpenSSL 1.1.1 11 Sep 2018
allocator: tcmalloc
modules: none
build environment:
distmod: ubuntu1804
distarch: x86_64
target_arch: x86_64
Run Code Online (Sandbox Code Playgroud)
本地机器版本(我执行的地方mongorestore)
db version v4.0.10
git version: c389e7f69f637f7a1ac3cc9fae843b635f20b766
allocator: system
modules: none
build environment:
distarch: x86_64
target_arch: x86_64
Run Code Online (Sandbox Code Playgroud)
失败:prod.DeviceState:为 prod.DeviceState 创建索引时出错:createIndex 错误:v:2 索引键模式中的值不能是对象类型。仅允许数字 > 0、数字 < 0 和字符串。
任何帮助解决这个问题?
谢谢
我想导出非常大的集合并将它们导入到另一台服务器的另一个数据库中。我发现至少有两种方法:mongoexport和mongodump。
我搜索了以前关于这个问题的帖子,但是我没有找到关于使用这两种方式导出速度和导出文件大小的完整比较/基准!如果有任何经验可以分享,我将不胜感激。
mongodb ×10
mongodump ×10
mongorestore ×6
linux ×1
macos ×1
mongoimport ×1
nosql ×1
replicaset ×1