我已从 atlas mongo db 中获取 mongodb 转储并恢复到 AWS 文档数据库。
当我恢复到文档数据库时出现以下错误
不知道如何处理文件“/root/livedb/filename.metadata.json.gz”,跳过...
我该如何解决这个问题。
在尝试恢复 MongoDB 转储时,我遇到了类似的问题,其中转储中的所有文件都使用 .gz 压缩。当我使用mongorestore时,我遇到了同样的错误。为了排除故障,我首先检查了 mongodump 如何生成转储文件。我注意到为集合(表)创建的文件没有压缩。
虽然我无法直接在 MongoDB Atlas 上测试这一点,但我在多个地方读到,Atlas 的转储在此过程中确实可能用 .gz 进行压缩。
为了解决这个问题,我编写了一个脚本来提取 .gz 文件并将未压缩的文件放入单独的文件夹中。
import os
import gzip
import shutil
src_dir = "/path/db/dump/db_name"
dest_dir = "/path/db/dump/db_name_extracted"
os.makedirs(dest_dir, exist_ok=True)
for file_name in os.listdir(src_dir):
if file_name.endswith(".gz"):
file_path = os.path.join(src_dir, file_name)
# remove .gz extensino
output_file_path = os.path.join(dest_dir, file_name[:-3])
with gzip.open(file_path, 'rb') as f_in:
with open(output_file_path, 'wb') as f_out:
shutil.copyfileobj(f_in, f_out)
print(f"Extracted: {output_file_path}")
print("All files were extracted and moved to the destination folder.")
运行此脚本后,我能够使用以下命令成功恢复转储:
mongorestore db_name_extracted/ -d db_name
这个解决方案对我有用,所以我希望它能帮助其他面临同样问题的人。