在使用mongorestore
命令恢复 MongoDB 数据时,可能会遇到各种错误,这些错误可能源于多种原因,包括版本不匹配、连接问题、权限问题等,以下是一些常见的mongorestore
报错及其详细解答:
1、无法连接到数据库服务器

错误信息:Failed: error connecting to db server: no reachable servers
原因分析: 此错误通常出现在无法连接到 MongoDB 服务器时,可能是由于网络问题、防火墙设置、服务器未启动或配置错误等原因导致。
解决方法:
确保 MongoDB 服务器正在运行,并且可以通过指定端口访问。
检查网络连接是否正常,确保没有防火墙阻止连接。
确认连接字符串和参数是否正确。

2、版本不兼容
错误信息:no reachable servers
或mongorestore not responding
原因分析:mongorestore
工具的版本与目标 MongoDB 服务器的版本不兼容,使用较旧版本的mongorestore
尝试恢复较新版本的 MongoDB 数据可能会导致此问题。
解决方法:
卸载当前版本的mongotools
(包含mongorestore
)。
从 [MongoDB 官方网站](httPS://www.mongodb.com/try/download/databasetools) 下载最新版本的mongodatabasetools
并安装。

重新运行mongorestore
命令。
3、用户权限不足
错误信息:not authorized on xxxx to execute command { listCollections: 1 }
原因分析: 尝试恢复数据的管理员账户没有足够的权限执行恢复操作。
解决方法:
确保用于恢复操作的用户具有足够的权限,可以通过以下命令为用户添加必要的角色:
- db.updateUser(
- "MyUserAdmin",
- {
- roles: [
- { role: "restore", db: "admin" },
- { role: "backup", db: "admin" }
- ]
- }
- );
再次尝试运行mongorestore
。
4、文件打开限制
错误信息:TooManyFilesOpen: error in creating eventfd: Too many open files
原因分析: 系统对单个进程可打开的文件数量有限制,当超过这个限制时会出现此错误。
解决方法:
临时增加文件打开限制,例如将限制增加到 204800:
- ulimit n 204800
如果需要永久修改,可以在/etc/security/limits.conf
文件中添加以下行:
- * soft nofile 204800
- * hard nofile 204800
然后重新启动相关服务。
5、副本集配置问题
错误信息:Did not find local voted for document at startup
原因分析: MongoDB 在启动时未找到副本集的配置文档,这可能是由于配置文件中设置了副本集但未正确配置。
解决方法:
检查并注释掉配置文件中的副本集设置,或者确保副本集配置正确,注释掉以下部分:
- #replication:
- # replSetName: rs0
重启 MongoDB 服务后再次尝试恢复。
6、架构版本不兼容
错误信息:Cannot restore users with schema version 1 to a system with server version 2.5.4 or greater
原因分析: 尝试将较低版本的用户架构恢复到较高版本的 MongoDB 服务器时会出现此错误。
解决方法:
先将数据恢复到相同版本的 MongoDB,然后升级到目标版本,先恢复到 MongoDB 2.4,再升级到 2.6。
或者使用较低版本的mongorestore
工具进行恢复。
7、数据重复或索引问题
错误信息:duplicate key error index
原因分析: 在恢复数据时,如果存在重复的数据或者索引冲突,会导致此错误。
解决方法:
在恢复前排除有问题的集合,单独处理。
- mongorestore host 127.0.0.1 port 27017 username hqms password hqms123 db saturn gzip drop archive=/data/saturn.gz &
- mongorestore host 127.0.0.1 port 27017 username hqms password hqms123 db saturn collection likereviews /data/saturn/likereviews.bson
确保备份数据时没有损坏,并且在恢复前清理目标数据库以防止数据冲突。
通过以上步骤可以解决大多数mongorestore
报错问题,如果问题仍然存在,建议查阅MongoDB官方文档或社区论坛寻求进一步帮助。