如何从gzip压缩的MongoDB归档备份中恢复指定集合?
解决MongoDB归档备份中仅恢复指定集合的问题
针对你用mongodump创建的归档压缩备份,以下是两种场景下的有效恢复命令,以及关键排查点:
1. 仅恢复指定集合到原数据库
确保--nsInclude使用完整命名空间格式(数据库名.集合名),配合--gzip和--archive参数:
mongorestore -h <host> -u <user> --password=<password> --authenticationDatabase <db_name> --gzip --archive=<backup_name>.gz --nsInclude="<db_name>.<collection_name>"
- 若需覆盖原集合已有数据,添加
--drop参数 - 命名空间需严格匹配备份中的实际名称(注意大小写,MongoDB在区分大小写的文件系统上对库名、集合名大小写敏感)
2. 恢复指定集合到新数据库
结合--nsFrom和--nsTo替换命名空间,同时用--nsInclude过滤目标集合:
mongorestore -h <host> -u <user> --password=<password> --authenticationDatabase <new_db_name> --gzip --archive=<backup_name>.gz --nsInclude="<db_name>.<collection_name>" --nsFrom="<db_name>.<collection_name>" --nsTo="<new_db_name>.<new_collection_name>"
- 若新集合名与原集合名一致,
--nsTo可简写为<new_db_name>.<collection_name> - 确保执行用户拥有创建新数据库的权限,或提前创建好目标数据库
关键排查点
- 保持工具版本一致:
mongorestore与mongodump版本不兼容可能导致参数解析异常 - 检查参数顺序:避免将
--archive等核心参数放在过滤参数之后,部分MongoDB版本对参数顺序敏感 - 验证备份内容:可通过
mongodump --archive=<backup_name>.gz --gzip --list命令查看备份中的所有集合,确认目标集合存在
内容的提问来源于stack exchange,提问作者Denis
相关产品推荐
相关产品推荐

