対象 : 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管理メニューのログ表示
を見て、問題がないことを確認します。