[学习笔记]Rocket.Chat业务数据备份
Rocket.Chat 的业务数据主要存储于mongodb数据库的rocketchat库中,聊天中通过发送文件功能产生的文件储存于/app/uploads中(文件方式设置为"FileSystem"),因此在对Rocket.Chat做数据移动或备份主要分为两步,数据库备份和文件备份。
前提
已在本地或docker中部署完成Rocket.Chat服务,部署方法请查看[学习笔记] Rocket.Chat 安装与设置启动项。
使用docker-compose方式部署时
- 确保mongodb暴露了端口以供宿主机访问。
- 确保宿主机的目录映射至rocketchat服务的
/app/uploads目录,此目录应在后台管理已正确设置

docker-compose.yml文档中rocketchat和mongo部分的内容应如下
rocketchat:
...
volumes:
- ./uploads:/app/uploads
mongo:
...
volumes:
- ./data/db:/data/db
- ./data/dump:/dump
ports:
- 27017:27017
准备工作
我们可以在服务宿主机中执行备份(本地备份),或者在远程计算机中执行备份(异地备份)
安装 mongodb-org-tools 工具,我们要用的是数据库备份mongodump和以及恢复mongorestore工具
详情请查看官网或教程
cd /etc/yum.repos.d
nano mongodb-org-4.0.repo
[mongodb]
name=MongoDB Repository
baseurl=http://mirrors.aliyun.com/mongodb/yum/redhat/7Server/mongodb-org/4.0/x86_64/
gpgcheck=0
enabled=1
运行安装命令
yum install mongodb-org-tools
备份
数据库备份
运行下列命令进行备份
mongodump -d="rocketchat" --gzip -o "/home/xamarin/dump"
等待备份完成,打印如下
2023-02-21T03:07:23.140+0000 writing rocketchat.users to
2023-02-21T03:07:23.140+0000 writing rocketchat.rocketchat_statistics to
2023-02-21T03:07:23.141+0000 writing rocketchat.rocketchat_cron_history to
2023-02-21T03:07:23.141+0000 writing rocketchat.rocketchat_message to
2023-02-21T03:07:24.980+0000 [........................] rocketchat.users 101/10594 (1.0%)
2023-02-21T03:07:24.980+0000 [#.......................] rocketchat.rocketchat_statistics 101/1791 (5.6%)
2023-02-21T03:07:24.980+0000 [#.......................] rocketchat.rocketchat_message 101/1363 (7.4%)
2023-02-21T03:07:24.980+0000 [#.......................] rocketchat.rocketchat_cron_history 101/1549 (6.5%)
2023-02-21T03:07:24.980+0000
2023-02-21T03:07:25.059+0000 [########################] rocketchat.rocketchat_message 1363/1363 (100.0%)
2023-02-21T03:07:25.059+0000 done dumping rocketchat.rocketchat_message (1363 documents)
此时备份文件将在/home/xamarin/dump目录下
在异地备份时可以使用-h 和 -port指定服务器地址
mongodump -h="<数据库服务器地址>" --port="27017" -d="rocketchat" --gzip -o "/home/xamarin/dump"
文件备份
前往已映射到宿主机的uploads所在目录,此处以/home/xamarin为例
cd /home/xamarin
添加压缩文件和快照文件,并保存在/home/xamarin/backups下
tar -g /home/xamarin/uploads-snapshot -zcvf /home/xamarin/uploads-full.tar.gz /home/xamarin/backups/uploads/

还原
数据库还原
运行如下命令进行mongodb数据库还原
mongorestore --gzip --drop --dir="/home/xamarin/backups/mongodb/dump/gzip/"
在异地还原时可以使用 -h 和 -port指定服务器地址
mongorestore -h="<数据库服务器地址>" --port="27017" --gzip --drop --dir="/home/xamarin/backups/mongodb/dump/gzip/"
文件还原
前往uploads-full.tar.gz备份文件所在目录
cd /home/xamarin/backups/uploads/
运行解压缩文件
tar -g uploads-snapshot -zxvf uploads-full.tar.gz -C /home/xamarin
打开Web端,观察到业务数据已悉数恢复

Troubleshooting
在还原过程中若出现Unrecognized field 'snapshot'字样如下
2023-02-21T14:06:07.022+0800 Failed: error writing data for collection `rocketchat.users` to disk: error reading collection: Failed to parse: { find: "users", skip: 0, snapshot: true, $readPreference: { mode: "secondaryPreferred" }, $db: "rocketchat" }. Unrecognized field 'snapshot'.
请确保备份和还原的工具版本一致,使用--version参数查看 mongodump 或 mongorestore版本
mongodump --version
[学习笔记]Rocket.Chat业务数据备份的更多相关文章
- SQL学习笔记六之MySQL数据备份和pymysql模块
mysql六:数据备份.pymysql模块 阅读目录 一 IDE工具介绍 二 MySQL数据备份 三 pymysql模块 一 IDE工具介绍 生产环境还是推荐使用mysql命令行,但为了方便我们测 ...
- Sharepoint2013搜索学习笔记之设置业务数据内容源(六)
Sharepoint搜索爬网组件支持爬Business Data Connectivity Service 承载的外部数据,关于Business Data Connectivity Service设置 ...
- R学习笔记(4): 使用外部数据
来源于:R学习笔记(4): 使用外部数据 博客:心内求法 鉴于内存的非持久性和容量限制,一个有效的数据处理工具必须能够使用外部数据:能够从外部获取大量的数据,也能够将处理结果保存.R中提供了一系列的函 ...
- .NET MVC 学习笔记(六)— 数据导入
.NET MVC 学习笔记(六)—— 数据导入 在程序使用过程中,有时候需要新增大量数据,这样一条条数据去Add明显不是很友好,这时候最好就是有一个导入功能,导入所需要的数据,下面我们就一起来看一下导 ...
- Kotlin学习笔记(9)- 数据类
系列文章全部为本人的学习笔记,若有任何不妥之处,随时欢迎拍砖指正.如果你觉得我的文章对你有用,欢迎关注我,我们一起学习进步! Kotlin学习笔记(1)- 环境配置 Kotlin学习笔记(2)- 空安 ...
- openresty 学习笔记二:获取请求数据
openresty 学习笔记二:获取请求数据 openresty 获取POST或者GET的请求参数.这个是要用openresty 做接口必须要做的事情.这里分几种类型:GET,POST(urlenco ...
- MySQL学习笔记十二:数据备份与恢复
数据备份 1.物理备份与逻辑备份 物理备份 物理备份就是将数据库的数据文件,配置文件,日志文件等复制一份到其他路径上,这种备份速度一般较快,因为只有I/O操作.进行物理备份时,一般都需要关闭mysql ...
- MyCat 学习笔记 第十篇.数据分片 之 ER分片
1 应用场景 这篇来说下mycat中自带的er关系分片,所谓er关系分片即可以理解为有关联关系表之间数据分片.类似于订单主表与订单详情表间的分片存储规则. 本文所说的er分片分为两种: a. 依据主键 ...
- MyCat 学习笔记 第八篇.数据分片 之 求摸运算分片
1 应用场景 Mycat 自带了多套数据分片的机制,其实根据数值取摸应该是最简单的一种. 优点:数据离散概率较为平均,可以有效的提高应用的数据吞吐. 缺点:比较明显,后期数据运维与迁移比较困难.好在M ...
- MyCat 学习笔记 第七篇.数据分片 之 按数据范围分片
1 应用场景 Mycat 其实自带了2个数据范围分片的方案,一个是纯数据范围的分片,比如 1至 10000 号的数据放到分片1 ,10001 至 20000号数据放到分片2里. 另一个是数据常量形式的 ...
随机推荐
- 精进语言模型:探索LLM Training微调与奖励模型技术的新途径
精进语言模型:探索LLM Training微调与奖励模型技术的新途径 LLMs Trainer 是一个旨在帮助人们从零开始训练大模型的仓库,该仓库最早参考自 Open-Llama,并在其基础上进行扩充 ...
- 从github上下载代码到本地
相关链接: 码云(gitee)配置SSH密钥 码云gitee创建仓库并用git上传文件 git 上传错误This oplation equires one of the flowi vrsionsot ...
- python入门之后须掌握的知识点(模块化编程、时间模块)【一】
相关文章: 全网最详细超长python学习笔记.14章节知识点很全面十分详细,快速入门,只用看这一篇你就学会了! python入门合集: python快速入门[一]-----基础语法 python快速 ...
- Mygin中间件优化及logger日志中间件
本篇是mygin的第七篇,参照gin框架,感兴趣的可以从 Mygin第一篇 开始看,Mygin从零开始完全手写,在实现的同时,带你一窥gin框架的核心原理实现. 目的 中间件Middleware优化 ...
- Laravel使用es
1.es是什么呢? ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口.Elasticsearch是用Java开发 ...
- php生成唯一订单号,高并发下不重复
//生成唯一订单号 function create_trade_no($prefix='dd') { return $prefix . date('YmdHis', time()) . substr( ...
- Vulkan学习苦旅04:创建设备(逻辑设备VkDevice)
设备是对物理设备的一种抽象,使我们更加方便地使用它.更准确地说,应该称其为"逻辑设备",但由于逻辑设备在Vulkan中极为常用,后面几乎所有的API都需要它作为第一个参数,因此在V ...
- SpringBoot + LiteFlow:轻松应对复杂业务逻辑,简直不要太香!
LiteFlow简介 LiteFlow是什么? LiteFlow是一款专注于逻辑驱动流程编排的轻量级框架,它以组件化方式快速构建和执行业务流程,有效解耦复杂业务逻辑.通过支持热加载规则配置,开发者能够 ...
- NC50615 取石子游戏 2
题目链接 题目 题目描述 有一种有趣的游戏,玩法如下: 玩家:2人: 道具:N堆石子,每堆石子的数量分别为 \(X_1,X_2,...,X_n\) : 规则: 游戏双方轮流取石子: 每人每次 ...
- NC16742 [NOIP2002]字串变换
题目链接 题目 题目描述 已知有两个字串 A, B及一组字串变换的规则(至多6个规则): A1 -> B1 A2 -> B2 规则的含义为:在A中的子串 A1可以变换为 B1.A2可以变换 ...