docker 不进入容器备份mongodb


安装docker时,没有将存储目录(默认:/var/lib/docker)放在大磁盘中,

设置了mongodb的数据库文件路径到/data/db

在启动容器的时候做了地址映射,

比如:-v /data/mongodb:/data/db。/data/目录现在有500G,可以直接进入容器的/data/db目录进行备份,不会占用/var/lib/docker的空间。

如果没有做地址映射,不能进入容器中备份。

mongodb的数据目前是192G,/var/lib/docker

目前/var/lib/docker(/目录)只有96G

 

需要在不进入容器的情况下备份数据库到当前目录

#docker exec mongo sh -c 'exec mongodump --username 用户名-p 密码 -d 数据库名--archive' > 数据库名.archive

#docker exec mongo sh -c 'exec mongodump --username user1 -p 123456 -d iot --archive' > iot.archive

ps

不进入容器,导入数据

#docker exec -i mongodb sh -c 'exec mongorestore --archive --username 用户名 -p 密码 --authenticationDatabase 数据库名 --nsInclude 数据库名.* ' < 数据库名.archive

#user1/123456是iot数据库的用户/密码

#docker exec -i mongo6 sh -c 'exec mongorestore --archive --username user1 -p 123456 --authenticationDatabase iot --nsInclude iot.* ' < iot.archive

或者

#docker exec -i mongodb sh -c 'exec mongorestore --archive --username admin数据库的管理员名 -p 密码  --nsInclude 数据库名.* ' < 数据库名.archive

#a1/123456是admin数据库的用户/密码

#docker exec -i mongo6 sh -c 'exec mongorestore --archive --username a1 -p 123456  --nsInclude iot.* ' < iot.archive

navicat查看到还原的数据