使用mongodump和mongorestore来备份和恢复Rocket.Chat

目标:在Ubuntu Server 16.04.1 LTS上使用snap安装Rocket.Chat。

本地的文档中详细描述了备份/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 选项。

在本文所述的方法中进行恢复时,如果应用程序和数据库的版本不同,其运作方式尚未确认。
在以下方法中,如果将旧版本的数据库恢复到新版本的Rocket.Chat中,则在启动Rocket.Chat时将执行数据库迁移。在Rocket.Chat管理菜单的日志中将输出相应的日志。
由于Rocket.Chat的版本经常更新,因此我使用这种方法进行备份和恢复。

由于MongoDB的默认配置不允许外部连接,因此在Rocket.Chat安装服务器上进行操作。

安装mongodb-org-tools

2017/05/19 增加记录
由于可使用内置的 mongodump 和 mongorestore,因此无需安装。

为了使用 mongodump 和 mongorestore,需要按照以下链接提供的教程在Ubuntu上安装MongoDB。参考链接: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。
参考网址:https://docs.mongodb.com/v3.2/reference/program/mongorestore/#options。

开始提供Rocket.Chat服务

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

在Rocket.Chat管理菜单的日志显示中,我们会确认是否存在问题,这是在服务启动之后的事情。

bannerAds