対象 : Ubuntu Server 16.04.1 LTS上にsnapでインストールしたRocket.Chat
本家のドキュメントには ファイルアップロードとCustom Emoji Filesystemのファイル保存先ストレージ種類が/var/snap/rocketchat-server/commonのバックアップ方法が記載されていますが、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管理メニューのログ表示を見て、問題がないことを確認します。