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中创建用户并使用该用户登录,应该就没有问题。 但是,我还没有这样做。