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查看到还原的数据