从 centos docker 上备份 mongodb 数据到本地
初衷
项目本意是为了给 centos 上的数据备份到 mac 上的 docker 上。
进入 centos
sh
ssh root@139.9.212.113
进入 docker 中的 mongodb
sh
docker exec -it mongodb_container_id /bin/bash
导出 mongodb 数据到 mongodb 容器内
sh
mongodump -h 127.0.0.1:27017 --archive=/home/db.gz --gzip -d=db
- -h 表示 host
- -d 表示 database
- --gzip 表示压缩
更多备份内容:https://docs.mongodb.com/manual/reference/program/mongodump/
将上面导出到 mongodb 中的数据拷贝到 centos
sh
docker cp mongodb_container_id:/home/db.gz /home
- mongodb_container_id:mongodb 容器 id
- /home/db.gz:mongodb 容器内备份的路径
- /home:导出到 centos 的路径
本地电脑下载 centos 上备份的 mongodb 数据
在 mac 本地的 zsh 中执行 scp 命令
sh
scp root@139.x.xxx.xxx:/home/auto.gz ~/work
- root@139.x.xxx.xxx:表示 centos 登录的账号和 ip
- /home/auto.gz 表示上面导出到 centos 的 mongodb 的数据路径
- ~/work 表示导出到本地 mac 的路径
拷贝上一步导出到本地的 mongodb 数据到 mac中 docker里 mongodb 中
sh
docker cp ~/work/db.gz mac_docker_mongodb_container_id:/home/
- ~/work/db.gz:表示 mac 中的数据路径
- mac_docker_mongodb_container_id:mac 上 docker mongodb 的 container id
- /home/:表示 mac 上 docker 中 mongodb 容器中备份路径
导入到本地 mac 的 docker 的 mongodb 中
测试下
sh
mongorestore --gzip --archive=/home/db.gz dump/ --dryRun --verbose
- --dryRun 表示演习一下
- --verbose 显示执行详情
- 注:去掉 --dryRun --verbose 才算真的恢复数据
上面如果测试成功的话,执行:
sh
mongorestore --gzip --archive=/home/db.gz dump/
当 mongod 开启权限认证的话,可以尝试
shell
mongorestore -u root -p=root39816561 --gzip --archive=/home/auto.gz dump/ --verbose