不知道如何处理文件“/root/livedb/filename.metadata.json.gz”,跳过

问题描述 投票:0回答:1

我已从 atlas mongo db 中获取 mongodb 转储并恢复到 AWS 文档数据库。

当我恢复到文档数据库时出现以下错误

不知道如何处理文件“/root/livedb/filename.metadata.json.gz”,跳过...

我该如何解决这个问题。

mongodb collections mongodb-atlas atlas
1个回答
0
投票

在尝试恢复 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

这个解决方案对我有用,所以我希望它能帮助其他面临同样问题的人。

© www.soinside.com 2019 - 2024. All rights reserved.