Docker MongoDB 数据库备份 并复制到宿主 恢复

阅读:308
作者:majingjing
发布:2019-05-07 22:47:07

一、从宿主连接到MongoDB容器

docker exec -it <你的MongodDB容器名> /bin/bash

二、使用mongodump命令进行数据库备份

容器中执行

mongodump -h 127.0.0.1 --port 27017 -u=用户名 -p=密码 -d test -o /dump
参数作用
-hhost
  • -port | 端口 -d | 指定数据库 -o | 指定备份到哪个目录,不指定应该是直接备份到根目录的/dump文件夹 -u | 用户名 -p | 密码 系统备份成功会在/home/dump目录下自动生成一个数据库名的文件夹/test,里面是全部Collection备份的bson文件。

三、打包备份文件夹

还是容器中执行

tar -zcvf test.tar.gz /dump/test

四、从容器复制到宿主

Ctrl+D 或输入 excit 切回到宿主机

docker cp <你的MongodDB容器名>:/dump/test.tar.gz /home

解压

tar -zxvf /home/test.tar.gz

解压后,bson解压到 /home/dump/test/

五、恢复

mongorestore -h <IP地址>:<端口> -d <数据库名> /home/dump/test/

六、示例

docker exec -it majj-tools-mongo7 bash

cd /dump

mongodump -d tmblog_dev -o /dump -h 127.0.0.1 --port 27017 -u=root -p=12345678 --authenticationDatabase admin

tar -zcvf tmblog_dev.tar.gz /dump/tmblog_dev


exit


docker cp majj-tools-mongo7:/dump/tmblog_dev.tar.gz /home


mongorestore -d tmblog_dev /dump/tmblog_dev/ -h 127.0.0.1 --port 27017 -u=root -p=12345678 --authenticationDatabase admin

原文链接 https://segmentfault.com/a/1190000012330284