在使用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脚本化,开发环境的搭建就会变得更加轻松!

广告
将在 10 秒后关闭
bannerAds