Matrix维护 :备份和迁移

本文涉及的是由 使用 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

导出的备份文件在:

  1. 数据库备份: /matrix/postgres.sql.gz
  2. 媒体备份: /matrix/media_bak_matrix.tar.xz

然后通过其他方式保存这些备份文件即可。

为了备份 Matrix 和 Mastodon,目前 AhFei 已经通过 Ansible 编写了自动化备份的流程,通用性和复用性欠缺,也许几个月后会有相关文章。

借助 ansible,在被控端运行手动备份的命令,然后把文件上传到 Minio,这样的好处是,被控端不需要专门安装备份软件,Borg 或者 Duplicati 之类的,非常轻量,而且很容易理解,缺点是没法增量备份和精细的版本管理。但这两个对很多备份并不必要。

迁移流程

  1. 先走安装流程,但是不要启动服务,否则会使数据库导入出现问题。也就是使用 setup-all tag 只安装,不启动
ansible-playbook -i inventory/hosts setup.yml --tags=install-all
  1. 然后导入数据库和媒体文件,具体流程看下面
  2. 最后启动服务
ansible-playbook -i inventory/hosts setup.yml --tags=start

完成! 🎉

导入数据库

官方说明: https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/master/docs/importing-postgres.md

如果旧实例是用这个 playbook 部署的,那没什么要修改的,若不是,可以看看官方说明。


  1. 首先,导出旧实例的数据库,参考上面的备份一节
  2. 然后把这个文件,复制到新实例的机子上,假设复制到 /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 是把三个一起导出,下面的导入针对的也是这种一起导出的文件。

  1. 在新实例的机子上导入,不过是在控制端,运行 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 轻松完成此操作

导入媒体文件

官方说明: https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/master/docs/importing-synapse-media-store.md

可以先压缩,再传。也可以直接传文件,如果你的聊天记录比较多,一定要用 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 交流依文章步骤遇到的问题。

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇