在使用Docker启动的MongoDB上进行恢复
docker run --rm --link mongo_mongodb_1:mongo -v /var/www/mongo/backup/:/backup --network mongo_default mongo:3.2 bash -c 'mongorestore --db ${DATABASE_NAME} --host mongo /backup'
选项说明
–删除
--rm
当容器退出时,请删除此次需要运行的Docker容器。
– 点击链接
--link mongo_mongodb_1:mongo
我正在使容器mongo_mongodb_1在启动中时可以连接到别名为mongo的容器中。
指定的是在执行docker ps命令时所列出的NAMES字段。
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
79412c85455e mongo-express "tini -- node app" 19 hours ago Up 19 hours 8081/tcp mongo_mongo-express_1
d2381e8d539c jrcs/letsencrypt-nginx-proxy-companion "/bin/bash /app/entr…" 19 hours ago Up 19 hours letsencrypt-nginx
ecf74e818b8e jwilder/nginx-proxy "/app/docker-entrypo…" 19 hours ago Up 19 hours 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp nginx-proxy
88085298f1e5 mongo:3.2 "docker-entrypoint.s…" 41 hours ago Up 19 hours 0.0.0.0:27017->27017/tcp mongo_mongodb_1
我到了。
-v /var/www/mongo/backup/:/backup
本次我将docker容器内的/backup目录挂载到主机的/var/www/mongo/backup/。
备份目录的内容如下所示
$ ls -l backup/
合計 203496
-rw-r--r-- 1 admin admin 17545 3月 14 10:44 admin-sessions.bson
-rw-r--r-- 1 admin admin 200 3月 14 10:44 admin-sessions.metadata.json
-rw-r--r-- 1 admin admin 12507 3月 14 10:44 authors.bson
.
.
.
-rw-r--r-- 1 admin admin 92 3月 14 10:47 userinfos.metadata.json
-rw-r--r-- 1 admin admin 29198 3月 14 10:47 users.bson
-rw-r--r-- 1 admin admin 88 3月 14 10:47 users.metadata.json
–网络
--network mongo_default
如果Mongo在不同的网络上运行,可以使用该选项来连接Mongo正在运行的网络。
运行命令
bash -c 'mongorestore --db ${DATABASE_NAME} --host mongo /backup'
在连接的mongo上使用–host mongo连接,并还原到${DATABASE_NAME}。
确认
我将确认能否将备份数据恢复到Docker内的MongoDB。
首先,进入MongoDB容器内部。
$ docker exec -it mongo_mongodb_1 bash
root@88085298f1e5:
进入Mongo Shell,检查是否存在数据库。
root@88085298f1e5:/# mongo
MongoDB shell version: 3.2.19
connecting to: test
> show dbs # データベース一覧を表示する
${DATABASE_NAME} 0.195GB
local 0.000GB
我确认了一切都好,可以进行恢复。
只要将执行命令像init.sh这样的shell脚本化,开发环境的搭建就会变得更加轻松!