本文涉及的是由 使用 Ansible 自动安装 Matrix 即时通信网络 – 技焉洲 (vfly2.com) 搭建而成的【 Matrix 】的 Matrix维护 步骤。
介绍和具体使用方法请到:自建 即时通信 – 全面监管下,一个自由无限制交流的赛博小屋 – 技焉洲 (vfly2.com)
手动备份
使用 root 方便
sudo -i
导出数据库
在旧实例的机子上,运行命令导出:(需要确保 Postgres 正在运行)
docker exec --env-file=/matrix/postgres/env-postgres-psql matrix-postgres \
/usr/local/bin/pg_dumpall -h matrix-postgres | gzip -c > /matrix/postgres.sql.gz
备份媒体文件
媒体文件的默认目录为 /matrix/synapse/storage/media-store
tar -J -c -f /matrix/media_bak_matrix.tar.xz /matrix/synapse/storage/media-store -p
导出的备份文件在:
- 数据库备份:
/matrix/postgres.sql.gz
- 媒体备份:
/matrix/media_bak_matrix.tar.xz
然后通过其他方式保存这些备份文件即可。
为了备份 Matrix 和 Mastodon,目前 AhFei 已经通过 Ansible 编写了自动化备份的流程,通用性和复用性欠缺,也许几个月后会有相关文章。
借助 ansible,在被控端运行手动备份的命令,然后把文件上传到 Minio,这样的好处是,被控端不需要专门安装备份软件,Borg 或者 Duplicati 之类的,非常轻量,而且很容易理解,缺点是没法增量备份和精细的版本管理。但这两个对很多备份并不必要。
迁移流程
- 先走安装流程,但是不要启动服务,否则会使数据库导入出现问题。也就是使用
setup-all
tag 只安装,不启动
ansible-playbook -i inventory/hosts setup.yml --tags=install-all
- 然后导入数据库和媒体文件,具体流程看下面
- 最后启动服务
ansible-playbook -i inventory/hosts setup.yml --tags=start
完成! 🎉
导入数据库
官方说明: https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/master/docs/importing-postgres.md
如果旧实例是用这个 playbook 部署的,那没什么要修改的,若不是,可以看看官方说明。
- 首先,导出旧实例的数据库,参考上面的备份一节
- 然后把这个文件,复制到新实例的机子上,假设复制到
/root/postgres.sql.gz
scp -P 22 root@matrix.vfly2.com:/root/postgres.sql.gz /root/
执行
/matrix/postgres/bin/cli
可以打开 psql 终端,通过 \l 命令可以查看所有数据库,应该有 3 个, pg_dumpall 是把三个一起导出,下面的导入针对的也是这种一起导出的文件。
- 在新实例的机子上导入,不过是在控制端,运行 ansible 实现:
just run-tags import-postgres \
--extra-vars=server_path_postgres_dump=SERVER_PATH_TO_POSTGRES_DUMP_FILE \
--extra-vars=postgres_default_import_database=matrix
- 将
SERVER_PATH_TO_POSTGRES_DUMP_FILE
替换为新实例机子上的文件路径,按照上面的则是/root/postgres.sql.gz
- 导入大型数据库后,最好运行
ANALYZE
操作以使 Postgres 重建其数据库统计信息并优化其查询规划器。您可以通过运行just run-tags run-postgres-vacuum -e postgres_vacuum_preset=analyze
通过 playbook 轻松完成此操作
导入媒体文件
可以先压缩,再传。也可以直接传文件,如果你的聊天记录比较多,一定要用 rsync。媒体文件的默认目录为 /matrix/synapse/storage/media-store
先把旧实例的文件复制到新实例机器上:
rsync -avuzP -e "ssh -p 22" -r root@matrix.vfly2.com:/matrix/synapse/storage/media-store /root/
导入(记得替换 <server-path-to-media_store>
为新实例机器上真实路径,如前面命令,则是 server_path_media_store=/root/media-store
)
ansible-playbook -i inventory/hosts setup.yml --extra-vars='server_path_media_store=<server-path-to-media_store>' --tags=import-synapse-media-store
原文链接: https://yanh.tech/2024/01/backup-and-migration-of-matrix/
版权声明:本博客所有文章除特別声明外,均为 AhFei 原创,采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 技焉洲 (yanh.tech) 。
保持更新 ٩(•̤̀ᵕ•̤́๑)ᵒᵏᵎᵎᵎᵎ 清晰恒益的实用技能,欢迎使用 RSS 订阅,或在支持 ActivityPub 的平台关注 @vfly2tech@yanh.tech
接收新文章的推送,如果能留言互动就更好了。
可在 Telegram 群组 https://t.me/vfly2 交流依文章步骤遇到的问题。