mongodb 在 Windows 环境下迁移数据库的问题
mongodb 是一款非常优秀的文档数据库,它的社区版本是免费的。但是 mongodb 的迁移和其他传统的关系数据库不太一样,通过官方提供的图形化的客户端工具无法备份和迁移,需要下载命令行工具进行。
首先下载命令行工具:
Download MongoDB Command Line Database Tools | MongoDB
Windows 安装后,使用管理员身份打开 cmd 命令窗口,导航到安装目录的 bin 目录下,如果是默认安装的话,应该是:C:\Program Files\MongoDB\Tools\100\bin
核心的命令有两个,mongodump 和 mongorestore。前者用于备份,后者用于恢复,两者合起来使用,就实现了数据库迁移。
备份一个数据库的命令如下:
mongodump --uri="mongodb://username:password@host:port/database" "d:/dump"
但是一定会抱错,错误信息如下:
auth error: sasl conversation error: unable to authenticate using mechanism "SCRAM-SHA-1": (AuthenticationFailed) Authentication failed.
网上众说纷纭,什么防火墙、安全配置,都不对,是因为如果 mongodb 服务器开启了用户验证,则客户端登录时,一定要指定验证的数据库,而 compass 工具是默认内置指定了验证数据库,所以不需要手动指定,而使用命令行工具时,则必须指定。把上述命令修改为
mongodump --uri="mongodb://username:password@host:port/database" "d:/dump" --authenticationDatabase=admin
命令顺利执行!!
同理,mongorestore 命令也是一样的道理。按照如下命令执行即可:
mongorestore --uri="mongodb://username:password@target_host:target_port/target_database" “d:/dump” --authenticationDatabase=admin