MongoDB 6.0用mongorestore恢复遇错误,如何跳过或解决?
解决mongorestore恢复时bson.raw类型转换失败的问题
跳过错误继续恢复
用--stopOnError=false参数关闭错误中断机制,mongorestore会跳过损坏的文档继续完成剩余数据的恢复。注意这种方式会丢失出错的那部分数据,恢复完成后需要检查fs.chunks集合的数据完整性。
执行命令示例:
mongorestore --stopOnError=false <你的其他恢复参数>
修复损坏的bson文件
如果fs.chunks.bson文件本身存在损坏,可通过bsondump工具导出为JSON后手动清理错误条目:
- 将bson文件导出为JSON格式:
bsondump --outFile fs_chunks.json fs.chunks.bson
导出过程中会提示损坏文档的位置,找到后删除JSON文件中对应的错误条目。
2. 将修复后的JSON文件导入数据库:
mongoimport --db <目标库名> --collection fs.chunks --file fs_chunks.json
验证备份完整性
确认备份是通过mongodump完整生成的,不存在备份中途中断、存储介质损坏等情况。如果备份本身存在问题,重新从源数据库生成可靠备份后再尝试恢复。
针对GridFS集合的特殊处理
报错的fs.chunks是GridFS的块集合,可根据实际需求选择以下方式:
- 跳过该集合,单独恢复其他数据:使用
--excludeCollection=fs.chunks参数,命令示例:
mongorestore --excludeCollection=fs.chunks <你的其他恢复参数>
- 重新迁移GridFS数据:从源数据库单独导出GridFS的文件集合和块集合,再导入到目标数据库中。
内容的提问来源于stack exchange,提问作者Astem
相关产品推荐
相关产品推荐

