MongoDB数据库使用命令行快速备份、迁移、还原转码数据库详细教程

 Moe @ 2019-06-20 10:06:35

说明: 之前很多人问过MongoDB数据库备份各种报错的问题,这里就大概说下,网上很多人提到的备份命令都不适用于开源版、高级版、纯净版这种加了密码的数据库,不然会各种报错,比如常见的Failed: error connecting to db server: server returned error on SASL authentication step: Authentication failed,这里就提供个参数最全的备份、还原命令,基本不会出错了。

备份

该命令在原(旧)服务器上操作,使用SSH客户端登录使用命令:

mongodump -h 127.0.0.1 -u ffmpeg -p ffmpeg -d ffmpeg -o /root --authenticationDatabase ffmpeg

-u是数据库用户名,-p是数据库密码,-d是要备份的数据库名,-o是备份路径,--authenticationDatabasehou是要备份的数据库。

此时备份好后的数据库文件夹为/root/ffmpeg

迁移

该命令在新服务器上操作,使用SSH客户端登录使用命令:

#原服务器SSH端口为22
rsync -av root@1.1.1.1:/root/ffmpeg /root

#原服务器SSH端口为其它,比如9999,自行修改即可
rsync -av -e 'ssh -p 9999' root@1.1.1.1:/root/ffmpeg /root

1.1.1.1为原(旧)服务器ip/root/ffmpeg为原服务器上数据库备份名、/root为转移到新服务器的文件夹。

如果你提示-bash: rsync: command not found报错,则需要先运行以下命令安装一下:

#CentOS系统
yum install rsync -y

#Debian、Ubuntu系统
apt install rsync -y

还原

注意: 还原前,新服务器必须安装MongoDB数据库,而且也同样需要建立一个数据库、名称、密码,这里大概说下数据库新建操作。

#打开Mongodb控制台
mongo
#新建ffmpeg数据库
use ffmpeg
#新建用户名和密码
db.createUser({user:"ffmpeg",pwd:"ffmpeg",roles:[{role:"readWrite",db:"ffmpeg"}]})
#验证
db.auth("ffmpeg","ffmpeg")

返回为1则使用Ctrl+D退出。

开始还原,该命令继续在新服务器上操作,使用SSH客户端登录使用命令:

mongorestore -h 127.0.0.1 -u ffmpeg -p ffmpeg -d ffmpeg /root/ffmpeg --authenticationDatabase ffmpeg

-u是数据库用户名,-p是数据库密码,-d是要还原的数据库名和迁移的数据库名路径,--authenticationDatabasehou是要还原的数据库。

最后MongoDB指定数据库基本就迁移好了。

回复