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查看到还原的数据
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
2021-06-16 Oracle Job定时任务的使用详解