我在计算机A(ubuntu 12.04服务器)上使用mongodump创建了一个转储.我将它移动到计算机B(ubuntu 12.04服务器)并输入:
mongorestore -db db_name --drop db_dump_path
它失败了,它报告说:
连接到:127.0.0.1
终止在抛出'std :: runtime_error'的实例后调用
what():locale :: facet :: _ S_create_c_locale name无效
Aborted
我以前成功地完成了这个操作,这种奇怪的行为从未发生过.我需要做些什么来解决这个问题?
我曾经习惯mongodump转储我的mongodb数据库,它创建了一些bson文件dump/mydb
但我不知道如何使用它们.我试过mongoimport,但似乎无法导入bson数据.那么如何使用这些bson文件?如何将它们导入另一个mongodb?
如何使用mongodump将单个集合从一个数据库移动到另一个数据库?
我该如何使用该命令及其选项?
我试图在产品服务器上备份我的mongo数据库,然后恢复然后返回到登台服务器.这里出现了一些问题,db中有很多集合,我想igonre一些我不想在登台服务器上恢复的集合.
我可以通过转储staging db,转储产品db,然后将prodct恢复到staging useing --drop选项来解决这个问题.并在staging db中恢复指定的集合.呃..真的很糟糕.
转储产品数据库
mongodump --host product-server-host --username abcd --password bcda -d db -o pruduct-dump-dir
Run Code Online (Sandbox Code Playgroud)
2. dump staging db
mongodump --host staging-server-host --username abcd --password bcda -d db -o staging -dump-dir
Run Code Online (Sandbox Code Playgroud)
3.恢复所有集合,然后恢复集合,将 恢复pruduct-dump-dir恢复到登台服务器
mongorestore --host staging-server-host --username abcd --password bcda --drop pruduct-dump-dir
mongorestore --host staging-server-host --username abcd --password bcda --drop --collection coll pruducting-dump-dir
Run Code Online (Sandbox Code Playgroud)
我在转储时有没有像ignore-collection这样的选项?任何建议将不胜感激:3
当我在MongoDB(版本3)中创建所有数据库的备份时:
mongodump --username bacUser --password 12345
Run Code Online (Sandbox Code Playgroud)
没关系.但是当我尝试创建所选数据库的备份时:
mongodump --username bacUser --password 12345 --db test
Run Code Online (Sandbox Code Playgroud)
它给了我这个错误:
失败:连接到数据库服务器时出错:服务器在SASL身份验证步骤上返回错误:身份验证失败.
我收到以下错误(转储MongoDB 3.2)(恢复MongoDB 3.4):
Failed: ngivr-dev.ledgerhelpers: error creating indexes for ngivr-dev.ledgerhelpers: **createIndex error:** **The field 'safe' is not valid for an index specification.** Specification: **{ unique: true, name: "ledgerId_1", safe: null, ns: "ngivr-dev.ledgerhelpers", background: true, key: { ledgerId: 1 } }**
Run Code Online (Sandbox Code Playgroud)
看起来安全索引为null.但是我如何在MongoDB 3.4中使用它?3.2没关系.
我已经找到了很多关于如何使用mongodump和mongorestore的良好指示,备份我的流星生产服务器并在需要时恢复备份:
meteor mongo --url myApp.meteor.com
mongodump -u client -h production-db-b2.meteor.io:27017 -d myApp_meteor_com -out dump/2014_10_21 -p [password from meteor mongo --url]
mongorestore -u client -h production-db-b2.meteor.io:27017 -d myApp_meteor_com dump/2014_10_21_v2/myApp_meteor_com -p [password from meteor mongo --url]
Run Code Online (Sandbox Code Playgroud)
我没有找到的解释是如何将备份转储恢复到我的本地流星应用程序.我的app文件夹中有一个mongodump输出.我不确定我是否可以使用mongorestore,或者我是否应该做其他事情.
我正在使用安装在 EC2 实例上的 mongo db 服务器版本 MongoDB shell 版本 v4.0.16。
我可以使用 mongo 命令进入实例
mongo mongodb+srv://dxxxxxxx:xxxxxx[][]@cluster0-vxcen.gcp.mongodb.net
MongoDB shell version v4.0.16
connecting to: mongodb://cluster0-shard-00-02-vxcen.gcp.mongodb.net.:27017,cluster0-shard-00-01-vxcen.gcp.mongodb.net.:27017,cluster0-shard-00-00-vxcen.gcp.mongodb.net.:27017/?authSource=admin&gssapiServiceName=mongodb&replicaSet=Cluster0-shard-0&ssl=true
2020-03-05T09:02:45.265+0000 I NETWORK [js] Starting new replica set monitor for Cluster0-shard-0/cluster0-shard-00-02-vxcen.gcp.mongodb.net.:27017,cluster0-shard-00-01-vxcen.gcp.mongodb.net.:27017,cluster0-shard-00-00-vxcen.gcp.mongodb.net.:27017
2020-03-05T09:02:45.604+0000 I NETWORK [ReplicaSetMonitor-TaskExecutor] Successfully connected to cluster0-shard-00-00-vxcen.gcp.mongodb.net.:27017 (1 connections now open to cluster0-shard-00-00-vxcen.gcp.mongodb.net.:27017 with a 5 second timeout)
2020-03-05T09:02:45.607+0000 I NETWORK [js] Successfully connected to cluster0-shard-00-01-vxcen.gcp.mongodb.net.:27017 (1 connections now open to cluster0-shard-00-01-vxcen.gcp.mongodb.net.:27017 with a 5 second timeout)
2020-03-05T09:02:45.707+0000 I NETWORK [js] changing hosts to Cluster0-shard-0/cluster0-shard-00-00-vxcen.gcp.mongodb.net:27017,cluster0-shard-00-01-vxcen.gcp.mongodb.net:27017,cluster0-shard-00-02-vxcen.gcp.mongodb.net:27017 from …Run Code Online (Sandbox Code Playgroud) 我已经使用mongorestore来恢复数据库,但是当我尝试运行我的应用程序时,我收到的错误是索引已经存在.
我知道函数db.collection.dropIndex()但是有没有办法自动执行此操作并立即从数据库中的所有集合中删除所有索引?
我试过了
db.getCollectionNames().forEach(function(col_name) {
var coll = db.getCollection(col_name);
coll.dropIndexes();
});
Run Code Online (Sandbox Code Playgroud)
但这并不能解决问题.有任何想法吗?
我正在按照本教程来备份和恢复单个MongoDB数据库.
备份命令 -
sudo mongodump --db newdb --out /var/backups/mongobackups/`date +"%m-%d-%y"`
Run Code Online (Sandbox Code Playgroud)
恢复命令 -
sudo mongorestore --db newdb --drop /var/backups/mongobackups/01-20-16/newdb/
Run Code Online (Sandbox Code Playgroud)
虽然它完美无缺,但MongoDB在恢复数据时给了我这个警告 -
只应在从BSON文件恢复时使用--db和--collection args.其他用途已弃用,将来不再存在; 请改用--nsInclude
有人可以解释如何删除此警告吗?
我正在使用MongoDB 3.4.1版本.
mongodb ×10
mongodump ×10
mongorestore ×6
dump ×1
indexing ×1
locale ×1
meteor ×1
ubuntu-12.04 ×1