Crowi进行升级,第一次试用

瞄准

我已经使用Crowi两年了。虽然有临时备份,但实际上并没有进行过备份。
公司和其他部门也开始使用它。
以前我一直忽视它崩溃的可能性,但现在我想考虑一下该解决这个问题了。
顺便说一下,Docker的那个东西在运行着。

途径

我计划在此次备份和恢复MongoDB的过程中解决这个问题。

步骤

确认MongoDB容器的名称

> docker ps
CONTAINER ID        IMAGE                             COMMAND                  CREATED             STATUS              PORTS                      NAMES
f79c89b228c8        crowi_crowi                       "docker-entrypoint.s…"   17 minutes ago      Up 17 minutes       0.0.0.0:3000->3000/tcp     crowi_crowi_1
d0b5a3892e46        mongo:3.6.3                       "docker-entrypoint.s…"   17 minutes ago      Up 17 minutes       0.0.0.0:27017->27017/tcp   crowi_mongodb_1
c53732c51848        redis:4.0.8                       "docker-entrypoint.s…"   4 hours ago         Up 17 minutes       0.0.0.0:6379->6379/tcp     crowi_redis_1
5307508ede61        plantuml/plantuml-server:latest   "/docker-entrypoint.…"   4 hours ago         Up 17 minutes       0.0.0.0:8080->8080/tcp     crowi_plantuml_1

登录到MongoDB容器中。

> docker exec -it crowi_mongodb_1  /bin/bash

登录后创建一个名为”back”的文件夹,并执行mongodump备份操作。

root@d0b5a3892e46:/home# mkdir back
root@d0b5a3892e46:/home# cd back/ 
root@d0b5a3892e46:/home/back# ls
root@d0b5a3892e46:/home/back# mongodump

在此任务中,将恢复名为“dump”的文件到指定文件夹中。
从登录中恢复,并将生成的dump文件带回本地。

> docker cp crowi_mongodb_1:/home/back/dump ~/prog/crowi/

在此之后,为了进行排练,需要先删除容器,然后通过再次运行docker-compose up来创建一个全新的crowi系统。

所以,我们可以选择不创建“back”文件夹进行回退。

> sudo docker cp dump crowi_mongodb_1:/home/dump

进行还原操作

root@3f3c2d2ddfd9:/home# mongorestore dump/

恢复完成,用户和文章都没有问题。

[附言]远程也能备份

> mongodump --host 127.0.0.1:27017

问题

在此步骤中,当使用docker容器登录时,将以root用户登录,因此即使恢复也无法反映某些文章。
以下是一个简单的方法。

    コンテナログイン時までは一緒
    dump用のフォルダを作成する
    以下のコマンドを打ってユーザーを切り替える
$ su mongodb
    mongodumpでダンプする

这样一来,所有文章都会被呈现出来。
总结起来,用crowi + docker的mongo容器运行的mongodb被认为是属于mongodb用户的所有权。

我认为只要在MongoDB中创建用户并使用该用户登录,应该就没有问题。 但是,我还没有这样做。

bannerAds