LoginSignup
16
19

More than 5 years have passed since last update.

mongodumpとmongorestoreを使ったRocket.Chatのバックアップとリストア

Last updated at Posted at 2017-01-18

対象 : Ubuntu Server 16.04.1 LTS上にsnapでインストールしたRocket.Chat

本家のドキュメントには/var/snap/rocketchat-server/commonのバックアップ方法が記載されていますが、 ファイルアップロードとCustom Emoji Filesystemのファイル保存先ストレージ種類がGridFSの場合、MongoDBのバックアップで可能なようです。
今のところ問題なくバックアップ&リストアができています。

2017/05/19 追記
本家のドキュメントが更新されており、 sudo snap run rocketchat-server.backupdb でバックアップが可能になりましたが、これを使用する場合、 sudo が必要です。また、このコマンドの中身では本記事と同様に mongodump を使用してバックアップしているようです。
2018/06/14 追記
リストアも sudo snap run rocketchat-server.restoredb コマンドがありますが、本家コマンド--noIndexRestore オプションが付いているのに今日気づきました。

本家に記載されている方法でのリストアで、アプリとDBでバージョンが異なる場合、どのように動作するか未確認です。
以下に記載する方法では新しいバージョンのRocket.Chatに古いバージョンのDBをリストアした場合、Rocket.Chat起動時にDBマイグレーションが行われます。その場合、Rocket.Chat管理メニューのログ表示にログが出力されます。
Rocket.Chatは頻繁にバージョンが上がっているので、私はこの方法でバックアップ&リストアを行っています。

以下、MongoDBがデフォルトで外部からの接続ができないため、Rocket.Chatインストールサーバー上での作業となります。

mongodb-org-toolsのインストール

2017/05/19 追記
内蔵の mongodump, mongorestore を使用できたので、インストール不要です。

mongodump, mongorestoreを使用するためにインストールします。
参考:https://docs.mongodb.com/v3.2/tutorial/install-mongodb-on-ubuntu/

# 公開鍵インポート
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927
# リストファイル作成
echo "deb http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.2.list
sudo apt-get update
# インストール
sudo apt-get install mongodb-org-tools

バックアップ

※以下では一応サービス停止していますが、私の運用環境ではサービスを止めず、深夜人のアクセスがなさそうな所で実行しています。
2018/06/14 追記
本家のドキュメントに記載されている手順ではサービス止めてました。

Rocket.Chatサービス停止

sudo systemctl stop snap.rocketchat-server.rocketchat-server.service

バックアップ

mongodump -d parties

# 内蔵mongodumpを使用する際は以下(2017/05/19 追記)
/snap/rocketchat-server/current/bin/mongodump -d parties

カレントディレクトリにdump/partiesができます。
出力場所を指定したい場合、-oでディレクトリを指定してください。
参考:https://docs.mongodb.com/v3.2/reference/program/mongodump/#options

Rocket.Chatサービス開始

sudo systemctl start snap.rocketchat-server.rocketchat-server.service

リストア

Rocket.Chatサービス停止

sudo systemctl stop snap.rocketchat-server.rocketchat-server.service

リストア

mongorestore -d parties /path-to-dump-directory/dump/parties/ --drop

# 内蔵mongorestoreを使用する際は以下(2017/05/19 追記)
/snap/rocketchat-server/current/bin/mongorestore -d parties /path-to-dump-directory/dump/parties/ --drop

参考:https://docs.mongodb.com/v3.2/reference/program/mongorestore/#options

Rocket.Chatサービス開始

sudo systemctl start snap.rocketchat-server.rocketchat-server.service

サービス開始後、Rocket.Chat管理メニューのログ表示を見て、問題がないことを確認します。

16
19
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
16
19