mongodump备份MongoDB Atlas集群失败,版本不兼容是否为原因?
mongodump备份MongoDB Atlas集群报错问题解析
问题描述
执行mongodump备份命令时出现如下报错:
root@anuj-exportify-EXP02:/home/anuj/Exportify/DataMigration# mongodump --uri="mongodb+srv://<USERNAME>:<PASSWORD>@<CLUSTER-NAME>.mongodb.net/exportifydb" 2023-01-17T13:51:44.172+0530 writing exportifydb.schedules to 2023-01-17T13:51:44.173+0530 writing exportifydb.automated_logs to 2023-01-17T13:51:44.173+0530 writing exportifydb.automated_logs_bkp to 2023-01-17T13:51:44.173+0530 writing exportifydb.logs to 2023-01-17T13:51:44.190+0530 Failed: error writing data for collection `exportifydb.automated_logs` to disk: error reading collection: Failed to parse: { find: "automated_logs", skip: 0, snapshot: true, $db: "exportifydb" }. Unrecognized field 'snapshot'.
Atlas集群MongoDB版本为5.0.23,本地MongoDB版本为4.4.3。
原因分析
这个报错完全由本地mongodump工具版本与Atlas集群版本不匹配导致:
- MongoDB官方要求备份工具(mongodump)的版本需与目标集群版本保持一致,或至少不低于集群版本;
- 4.4版本的mongodump在备份时会向集群发送
snapshot: true参数,但5.0版本的MongoDB集群已不再识别该参数,因此触发"Unrecognized field 'snapshot'"错误。
解决方法
有两种可行方案:
- 升级本地MongoDB工具版本:将本地mongodump升级至5.0.x版本(建议和集群版本5.0.23完全一致),确保工具与集群的命令参数兼容;
- 添加强制表扫描参数:在mongodump命令中加入
--forceTableScan参数,绕过快照模式,避免发送snapshot参数,命令如下:mongodump --uri="mongodb+srv://<USERNAME>:<PASSWORD>@<CLUSTER-NAME>.mongodb.net/exportifydb" --forceTableScan
内容的提问来源于stack exchange,提问作者Anuj Panchal
相关产品推荐
相关产品推荐

