0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Crowiのバージョンアップ、リハ1

Last updated at Posted at 2020-01-23

狙い

Crowiを運用して2年が経ってしまった。仮初のバックアップはあったが実はしていない。
会社でも他の部署も使い始めそうである。
クラッシュしても知らん、の精神だったがそろそろ思い腰をあげようと思った。
ちなみに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/

この後に、今回はリハのため一度downしてコンテナを削除し、再度docker-compose up によりまっさらなcrowiのシステムを作成します。

で、戻します。「back」フォルダ作らんでよかったですね

> sudo docker cp dump crowi_mongodb_1:/home/dump

リストア実施

root@3f3c2d2ddfd9:/home# mongorestore dump/

で復元完了、、、、ユーザーも記事も問題なし。

[追記]
remoteでもバックアップいけるわ

> mongodump --host 127.0.0.1:27017

トラブル

本手順だとdockerコンテナログイン時はrootユーザでログインするのでリストアしても一部記事が反映されない。
簡略な方法としては以下である。

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

これで全部の記事が吐き出さられる。
まとめると巷にあふれるcrowi + docker のmongoコンテナで動いてるmongodbはmongodbユーザーに所有権があると言うことになります、

おそらく、mongodbの中でユーザーを作成してそのユーザーでログインすれば問題ないのだと思う。
が、まだやっていない。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?