如果我想为mongodb中的所有数据库进行通用备份,那么我所要做的就是:
$ mongodump
Run Code Online (Sandbox Code Playgroud)
如果我想恢复我创建的最新转储,我需要做的就是:
$ mongorestore
Run Code Online (Sandbox Code Playgroud)
我正在尝试将mongodump恢复到不同名称的数据库(应该可以通过--db <dbname>交换机).
我的工作目录包含一个转储文件夹,其中包含一个数据库转储.
但是,当我尝试这个命令时:
mongorestore --port xxxxx --db some_destination_db
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
ERROR: ERROR: root directory must be a dump of a single database
ERROR: when specifying a db name with --db
Run Code Online (Sandbox Code Playgroud)
我不知道为什么我得到这个,并且在谷歌上找不到任何帮助.有人有主意吗?
我有这样的事情:
dbs=$(mongo --quiet --eval "db.getMongo().getDBNames()" --host exemple.com | \
grep '"' | tr -d '"' | tr -d ',')
for db in $dbs; do
cols=$(mongo --quiet --eval "print(db.getCollectionNames())" $db \
--host exemple.com | tr ',' ' ')
for col in $cols; do
mongodump --host example.com -q "{_id:{\$gt:$oid}}" \
-d $dbs -c $col --out /data/
done
done
Run Code Online (Sandbox Code Playgroud)
我越来越:
不允许位置参数
如何mongodump在所有数据库中使用所有集合?
在MongoDB中,我试图建立一个Mongo持有的所有数据库的自动备份,我目前的脚本基础是
mongodump -u username -p password -o backup/(date)
Run Code Online (Sandbox Code Playgroud)
我有(日期)我希望将它转储到备份日期的文件夹中,例如2013-02-06
我希望通过chron作业或.sh脚本来实现这一点.
mongodump针对每秒写入多次的正在运行的服务器运行是否安全?是否有可能以这种方式损坏转储?
从这里:
用于
--oplog在 mongodump 操作期间捕获传入的写入操作,以确保备份反映一致的数据状态。
这是否意味着无论数据库转储中有多少写入都会保持一致?
如果我mongodump --oplog在凌晨1 点运行并在凌晨 2 点完成,那么我运行mongorestore --oplogReplay会得到什么状态?
从这里:
但是,对于分片集群和副本集,使用
mongodump和mongorestore作为备份策略可能会出现问题。
但为什么?我有 1 个主要和 2 个次要的副本集。运行mongodump中的次要问题是什么?它应该与主相同(复制滞后差异除外)。
有人曾经设法从标准输入恢复 mongodump 吗?
我使用引用的命令生成了备份文件:
mongodump --archive > file
Run Code Online (Sandbox Code Playgroud)
但该参考资料从未解释存档的格式,或如何恢复它。有人说你必须从 stdin 注入它,但他们仍然是个谜,因为没有证据表明它实际上是可能的。
事实上,我做了以下尝试,但没有成功:
cat file | mongorestore
mongorestore -vvvvv --archive < file
mongorestore -vvvvv --archive=file
Run Code Online (Sandbox Code Playgroud)
所有这些命令最终都会出现相同的错误:
Failed: stream or file does not appear to be a mongodump archive
Run Code Online (Sandbox Code Playgroud)
有关信息,我设法恢复了以经典方式生成的存档。
为什么我需要使用 --archive 到标准输出?
我的 mongodb 在 docker 里面。
我现在使用的选项在 docker内创建备份文件,然后我使用 docker cp 命令将其复制到主机,因此我使用了所需空间的两倍(在它被删除到容器内之前)。
不幸的是,docker 没有来自主机的挂载,我无法(还)重新启动它以添加选项。我正在寻找一个快速的选择。
尝试从远程节点进行转储并收到以下错误:
失败:无法创建会话:无法连接到服务器:connection():身份验证错误:sasl 对话错误:无法使用机制“SCRAM-SHA-256”进行身份验证:(身份验证失败)身份验证失败。
尝试了两种方法从远程节点获取转储。但是在这两种方法中都出现了相同的错误。
# Method 1
mongodump -h remoteip@port -u xxx -p xxx --db xxx --authenticationDatabase xxx
# Method 2
mongodump --uri "mongodb://username:password@remoteip:port/db?authSource=xxx"
Run Code Online (Sandbox Code Playgroud)
如何解决这个问题?
昨天,我在 PC 上重新安装了 Windows 10,并从 MongoDB 网站下载并安装了当前版本的 MongoDB Enterprise。安装MongoDB后,它工作正常。但是 C:\Program Files\MongoDB\Server\4.4\bin 目录中缺少 mongodump.exe 和 mongorestore.exe 文件。因此,我无法恢复以前的数据库并继续我的工作。我做错了什么吗?如何取回这些文件,以便恢复以前的数据库?
是否可以将mongodump导入添加到其中的现有集合(而不是覆盖它)?如果有,怎么样?
它会用mongoimport --db mydb吗?
集合在结构上是相同的,但是简单的具有来自同一应用的不同实例的不同数据集.我想将所有数据合并到一个数据库中.
下一个问题参考前一个mongodb在ubuntu中存储数据库的位置?
$ cd /var/lib/mongodb/
$ ls
ihtx.0 ihtx.1 ihtx.ns journal local.0 local.ns mongod.lock
Run Code Online (Sandbox Code Playgroud)
在这里,我可以看到ihtx.0 ihtx.1 ihtx.ns三个具有相同名称的文件.这是我通常在mongo shell中看到的mydatabase?我应该转储哪一个?
尝试每个,得到以下错误:
$ mongodump --dbpath /var/lib/mongodb/ihtx.XX --out /home/user/Desktop/
If you are running a mongod on the same path you should connect to that instead of direct data file access
Thu Mar 13 11:17:21.123 dbexit:
Thu Mar 13 11:17:21.123 [tools] shutdown: going to close listening sockets...
Thu Mar 13 11:17:21.123 [tools] shutdown: going to flush diaglog...
Thu Mar 13 11:17:21.123 [tools] shutdown: …Run Code Online (Sandbox Code Playgroud) 大家好,我是mongodb的新手,现在我尝试使用mongorestore还原它时,使用链接mongodump --db somedb --collection somecollection --out - | gzip > collectiondump.gz上给出的以下命令转储了我的一个收藏集,它使Error不知道如何处理文件。
请用这种方式帮助我,因为给定链接中的答案投票过多
mongodb ×12
mongodump ×12
mongorestore ×5
database ×2
backup ×1
bash ×1
docker ×1
dump ×1
mongo-shell ×1
mongoimport ×1
node.js ×1
ssh ×1
windows ×1