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

 

 

 

  

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

集群环境下的备份,建议不要压缩(-gzip),否则还原识别不出来

#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

注意:

还原的数据库名称需要备份时候的数据库名称一致。备份的数据库叫什么名称,还原的数据库也需要保持一致。

还原时可以不创建数据库,直接还原会同时创建数据库。mysql还原必须先创建数据库名才能还原成功。

集群的数据库还原,建议还原的文件不能压缩。

还原的数据是追加,而不是覆盖???还原的数据库中有数据,执行还原数据库命令后,原本有的数据还在,还原文件的数据也在,应该是追加。

追加也是追加不一样的数据,同样的数据不会重复还原(追加)

 

navicat查看到还原的数据

 

 

posted @   leihongnu  阅读(316)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
历史上的今天:
2021-06-16 Oracle Job定时任务的使用详解
点击右上角即可分享
微信分享提示