您的位置:首页 > 数据库 > Mongodb

遇到无法通过MongoDB可视化工具(比如Robo 3T)拷贝数据库的问题,该怎么进行数据库的备份与还原?

2020-03-05 09:17 2951 查看

遇到无法通过MongoDB可视化工具(比如Robo 3T)拷贝数据库的问题,该怎么进行数据库的备份与还原?

当我们想要将某个环境下(比如测试环境)的数据,全部拷贝到另外一个环境下(比如本地环境)时,如果电脑上面只安装了免费的MongoDB可视化工具——比如:Robo 3T,因为Robo 3T好像是不支持数据库的拷贝的,那么这个时候我们就应该另想他法。下面来完整演示下在该情形下如何进行数据库的备份与还原,如果大家有更好的方法,可以在留言区留言,后面我会再进行补充和完善。

方法一:

mongodb数据库的备份和还原主要分为两种,一种是针对库的mongodump和mongorestore,一种是针对库中表的mongoexport和mongoimport。备注:一定要注意操作库和操作表的命令是不一样的,如果输错了就会失败。

mongodump备份数据库的常用命令格式:

mongodump -h IP --port 端口 -u 用户名 -p 密码 -d 数据库 -o 文件存在路径

其中,

如果没有用户名和密码,可以去掉-u和-p;
如果导出本机的数据库,可以去掉-h;
如果是默认端口,可以去掉 --port;
如果想导出所有数据库,可以去掉-d。

这里我通过git命令行对数据库进行备份,示例如下。

mongodump -h 127.0.0.1 -d cloori_ecommerce -o ../data/dump

方法二:

当遇到想要拷贝测试环境下的数据库时,但此时数据库所遵循的协议不是HTTP(比如SSH协议),那么这个时候采用上述的方法就行不通了,在这种情况下可以先登录测试服务器,通过服务器的mongodb的docker容器里执行mongodump,然后再把文件拷贝到本地。具体操作步骤如下:
1. 登录测试服务器(执行ssh命令远程连接测试服务器)
打开任意的shell工具,我这里用的是bash shell,输入如下命令:

ssh -i keyfile -p 端口 用户名@IP

其中,keyfile替换成自己的私钥文件路径,私钥文件可以通过查看数据库的配置找到,比如打开Robo 3T,查看配置

2. 执行如下命令,进入docker容器,并在测试服务器上找到名称为mongodb的docker容器(要找到mongodb容器的准确名称,我的就叫mongodb,大家根据自己的实际情况进行调整)

docker ps


接着执行如下命令,进入mongodb容器(之后执行的所有命令都将在mongodb容器内执行,相当于远程连接到了一台虚拟机)

docker exec -it mongodb bash

3. 在mongodb容器内执行mongodump命令导出数据到可被外部访问的卷目录
mongodump命令带上-- archive=/dump.data,将导出结果打包到单一文件dump.data中,方便传递到本地,这里的 /dump.data 表示mongodb容器的根目录下的dump.data文件

mongodump -d 数据库名称 --archive=路径名

执行完命令以后,回到mongodb容器的根目录,并执行文件查看命令 ls,文件列表中如果有dump.data,就说明导出成功了。

4. 使用ssh或者FileZila等工具从服务器上把测试服务器上的文件复制到本地
先从容器退出,直接执行exit,退出shell,即可退出容器

exit

现在命令行环境又切换到了测试服务器,执行docker cp将容器内的文件复制到宿主机(即测试服务器)。示例如下:将mongodb容器根目录下的dump.data复制到宿主机的根目录,并保持相同的文件名

docker cp mongodb:/dump.data /

回到测试服务器的根目录下(输入命令 cd / ),输入文件查看命令 ls ,即可看到刚刚复制过来的文件

然后执行exit命令,退出测试服务器

5. 用scp命令从测试服务器上面拉取复制好的文件

scp -i keyfile -P 端口号 用户名@IP:/文件名 本地路径

之后去查看自己的本地路径就有了想要获取的文件

5. 在本地执行mongodbrestore命令,恢复数据库
将备份到本地的文件恢复到mongodb库中,- -archive==xxx是指定输入的文件

mongorestore -d 数据库名称 --archive=备份的文件路径名

这样本地的mongodb库中就有数据了!

  • 点赞
  • 收藏
  • 分享
  • 文章举报
积跬步得以至千里 发布了4 篇原创文章 · 获赞 0 · 访问量 176 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐