Growi MongoDBのバックアップとリストア

docker-composeの場合、execコマンドでmongoDBのダンプを取得して、

mongoDBにリストアすることが可能。

自分の場合は、ダンプ後のgzipが読み込めない現象が発生したので、結局この方法は断念しました。

作業メモとして記載しておきます。

やりたかったこと

docker-compose上のGrowiから、mongoDBの内容をダンプして、

ローカルのDockerで用意したmongoDBにインポートしたかった。

DBのエクスポート

# mongoイメージを使って、mongodumpコマンドで出力
docker-compose exec mongo mongodump -archive -gzip -db growi > growi.gz

MongoDBサーバーの起動

# ローカルにmongoDBサーバーを立ち上げる。
# ローカルのポートにバインド
docker run -d --name mongodb -p 27017:27017 -v $PWD:/workdir mongo

Mongoクライアントで、リストア

# mongoイメージで、ログイン
docker run --net=host -it --rm -v $PWD:/workdir mongo bash
cd workdir

# バックアップからリストアする。
mongorestore --archive=growi.gz

—net=hostにより、コンテナ内からホストOSのポート(27017)に接続が可能になっている。

$ mongorestore --archive=backup.tar.gz
Failed: stream or file does not appear to be a mongodump archive
0 document(s) restored successfully. 0 document(s) failed to restore.

stream or file does not appear to be a mongodump archive

このようなエラーが出て、うまくリストアできなかった。。

バックアップの仕方が悪いのだろうか。

バージョンによって、コマンドが少し変わってるようなのでそのあたり調べないと。。

バージョン

dockerで使ったmongoのバージョン

  • MongoDB shell version v4.4.4
  • MongoDB server version: 4.4.4

Growiで稼働中のmongoDBのバーション

  • image: mongo:3.6

コメントを残す