如何使用“mongorestore”通过 TAR.GZ 文件恢复数据库

How to use `mongorestore` to restore a database using a TAR.GZ file

简单问题:

$ mongorestore --gzip ./Mongo_DB_dump/restore-8f05kcbfhfbce745735eff49.tar.gz
2020-07-09T18:10:48.207-0500    Failed: file .\Mongo_DB_dump\restore-8f05kcbfhfbce745735eff49.tar.gz does not have .bson extension
2020-07-09T18:10:48.209-0500    0 document(s) restored successfully. 0 document(s) failed to restore.

如果我不知道数据库名称,如何使用“tar.gz”文件恢复数据库? 我正在尝试将生产实例(MongoDB 云)中的转储导入我的本地环境。如果相关的话,我的本地没有任何以前版本的数据库。

编辑

我还尝试使用 .tar.gz 文件来使用 mongostore --gzip,我还尝试将内容提取到 .tar 文件但是,对于这两个文件,我都收到以下错误:

2020-07-09T22:33:07.127-0500    Failed: file .\Mongo_DB_dump\restore-8f05kcbfhfbce745735eff49.tar.gz does not have .bson extension
2020-07-09T22:33:07.128-0500    0 document(s) restored successfully. 0 document(s) failed to restore.

我也试过使用/archive:<path-to-file>不成功:

$ mongorestore --gzip /archive:./Mongo_DB_dump/restore-8f05kcbfhfbce745735eff49.tar.gz
2020-07-09T22:52:59.076-0500    Failed: stream or file does not appear to be a mongodump archive
2020-07-09T22:52:59.077-0500    0 document(s) restored successfully. 0 document(s) failed to restore.

我什至试图盲目地将 .tar 扩展名更改为 .bson,但这当然没有成功:

2020-07-09T22:08:24.175-0500    checking for collection data in Mongo_DB_dump\restore-8f05kcbfhfbce745735eff49.bson
2020-07-09T22:08:24.601-0500    restoring Mongo_DB_dump.restore-8f05kcbfhfbce745735eff49 from Mongo_DB_dump\restore-8f05kcbfhfbce745735eff49.bson
2020-07-09T22:08:24.664-0500    finished restoring Mongo_DB_dump.restore-8f05kcbfhfbce745735eff49 (0 documents, 0 failures)
2020-07-09T22:08:24.664-0500    Failed: Mongo_DB_dump.restore-8f05kcbfhfbce745735eff49: error restoring from Mongo_DB_dump\restore-8f05kcbfhfbce745735eff49.bson: reading bson input: invalid BSONSize: 1953719666 bytes
2020-07-09T22:08:24.664-0500    0 document(s) restored successfully. 0 document(s) failed to restore.

我刚刚将 .tar.gz 文件的内容提取到 C:\ProgramData\MongoDB\data\db 并覆盖那里的所有内容... 我不太相信这个,但至少我能够工作,因为这样我就得到了 Mongo Shell[=15= 可见的数据库、集合和文档]. 如果您知道,请分享更好的答案。

以防其他人 运行 遇到这个问题:

我目前正在使用数据库版本 v4.4.5 并以两种不同的方式恢复备份:

  1. 如果你已经有一个转储的存档文件并压缩了它 dump.tar.gz ,那么你可以先 decompress/extract 存档文件然后用命令:

mongorestore --host=localhost --port=27017 --archive dump.tar

  1. 否则,您可以使用命令直接恢复dump.tar.gz

mongorestore --host=localhost --port=27017 --gzip --archive=dump.tar.gz

谢谢

在 Mac(Big Sur,Intel)上,我 found 我的 MongoDB 文件在 /usr/local/var/mongodb。然后我 备份 我当前的 mongodb 文件夹,然后用 .tar.gz 备份文件的解压缩内容(单个文件和文件夹)替换它的内容。

然后我 restarted 我的本地 MongoDB 服务。

用存档文件的内容替换您在本地的所有当前数据。

这个答案建立在@Metafaniel 的 之上。