Mastodon 备份、更新和迁移的全面指南

第一次因为改变域名,数据全部失效,重来用了几个月;第二次因为 VPS 故障,丢失 1 周数据,这还不算什么,但是配置文件我忽略没给自动备份,里的密码找不到,无法恢复实例;
累了,毁灭吧。
现在使用 memos 记录自己的简单日记了,因此 Mastodon 相关的文章都不会再更新,如果有失效的内容可以联系我,也许有空会更正。

本文 Mastodon维护 是另一篇文章的配套之作: Mastodon 原生安装步骤 – 技焉洲 (vfly2.com),介绍和具体使用方法请到:Mastodon 个人发布网络 – 技焉洲 (vfly2.com)

学会备份和迁移,不用再苦恼于 VPS 的费用和稳定度,轻松保障数据安全和迁移 Mastodon 实例到新的机器上。

备份

官网说明: Backing up your server – Mastodon documentation (joinmastodon.org)

需要备份的内容按重要性顺序:

  1. PostgreSQL 数据库。关于账户、密码、帖子、关注者等元信息,全在这里,丢失就意味着彻底结束了。
  2. .env.production 文件,存有密码和其他设置的。这个一般不会有变化,可以在部署好后就保存到密码管理器中。
  3. 媒体文件。只是不显示头像、媒体附件等,运作不受影响。
  4. Redis 数据库。丢失几乎无影响,可以不考虑。

在旧服务器上:

  1. 备份数据库。以 mastodon 用户运行下面命令
pg_dump -Fc mastodon_production -f backup.dump
  1. 备份媒体文件。媒体文件全在 /home/mastodon/live/public/system ,直接打包压缩,上传到其他地方即可。
  2. 这个可以不操作,除非你的实例有很多用户。Redis 定期写入 /var/lib/redis/dump.rdb ,备份这个文件就行。

自动备份的方法,其实写个脚本即可,请关注本站,将来会更新,毕竟这个是 AhFei 的需求。

更新

官网教程:Upgrading to a new release – Mastodon documentation (joinmastodon.org)

查看当前版本: 网站首页左下角就能看。

查看这个界面: Releases · mastodon/mastodon (github.com) ,了解版本更新说明,它会包含版本间的不同和更新时要注意的事项。


更新前,推荐先参考上面备份流程,备份一遍。

切换用户

su - mastodon

进入 Mastodon 根目录

cd /home/mastodon/live

下载发布的代码,具体的版本,在 Releases · mastodon/mastodon (github.com) 的发布说明中有,先看一遍这个说明

git fetch && git checkout v4.x.x

如果你的版本较低,与最新版中间还隔着几个发行版,可以直接更新到最新版,但是要看一遍每个版本的发布说明。

继续看发布说明,根据上面的步骤执行更新 ,一般没几个命令。


根据发布说明的教程,执行过后,退回 root : Ctrl D

重启 background workers:

systemctl restart mastodon-sidekiq

重新加载 web process:

systemctl reload mastodon-web

reload 类似 restart ,但不会下线,用 restart 的话,服务会短暂的下线
 

streaming API server 更新后需要重启,但这么做会中断与所有客户端的连接,因此在重新上线后,会有一个峰值的客户端重连请求,对服务器来说,运行压力 load 也会迎来一个峰值

systemctl restart mastodon-streaming

尽量避免重启这个,如果发布说明上没要求就不必重启

迁移

官方教程: Migrating to a new machine – Mastodon documentation (joinmastodon.org)

总体流程:

  1. 首先,在新机器上走一遍安装流程 Mastodon 原生安装步骤 – 技焉洲 (vfly2.com),但是不要运行 mastodon:setup 那个命令
  2. 停止旧机器上的 mastodon:
systemctl stop 'mastodon-*.service'
  1. 导出 Postgres 数据库,复制媒体文件 system/ 和配置文件 .env.production 到新的服务器,具体流程在下面。

上面复制完数据后,注意权限和所有者。然后切换 mastodon 用户

su - mastodon
cd live/
  1. 运行 RAILS_ENV=production bundle exec rails assets:precompile 编译 mastodon
  2. 运行 RAILS_ENV=production ./bin/tootctl feeds build 重建每个用户的 home timelines
  3. 设置 Nginx,systemd,具体也是看 安装流程 Mastodon 原生安装步骤 – 技焉洲 (vfly2.com) 对应的小节
  4. 启动新机器上的 mastodon

迁移数据

必须要复制的文件有:

  1. Postgres 数据库
  2. 目录 ~/live/public/system,它包含了用户上传的媒体文件 (如果使用 S3 存储,这步可以省了)
  3. 文件 ~/live/.env.production,包含服务端配置

非必须的文件:(可以不用管,重新弄就行)

  1. nginx 配置 ( /etc/nginx/conf.d/mastodon)
  2. systemd 配置文件,如果修改过 (/etc/systemd/system/mastodon-*.service)
  3. pgbouncer 配置 under /etc/pgbouncer,没使用则不必

迁移数据库 Postgres

新、旧服务器都使用 mastodon 用户进行操作

su - mastodon

在旧服务器上,以 mastodon 用户运行下面命令

pg_dump -Fc mastodon_production -f backup.dump

在新服务器上,用 scprsync 复制 backup.dump

scp -P 22 mastodon@123.123.123.123:/home/mastodon/backup.dump ./

在新服务器上,以 mastodon 用户创建新的空的数据库:

createdb -T template0 mastodon_production

导入 backup.dump :

pg_restore -Fc -U mastodon -n public --no-owner --role=mastodon \
  -d mastodon_production backup.dump

注意,如果新服务器上的用户名不是 mastodon ,则应更改上面的 -U 和 --role 值。

没有任何输出就代表成功导入。

在迁移 Mastodon 实例时,使用 template0 数据库作为模板,手动创建一个空的 Postgres 数据库。template0 是 Postgres 中的一个特殊数据库,它是只读的,并且不包含任何自定义对象或设置。
这个方法在恢复 Postgres 数据库的时候特别有用。恢复数据库通常涉及使用 pg_dump 命令创建的数据库备份。如果数据库中包含有自定义对象或设置,直接恢复到一个新数据库可能会遇到问题。
相关介绍: PostgreSQL: Documentation: 9.1: SQL Dump

迁移媒体文件和配置文件

文件多的话,一定要用 rsync ,我的实例就 AhFei 一人,就用 scp 了。

/home/mastodon/backup.dump ./
scp -P 22 mastodon@123.123.123.123:/home/mastodon/live/public/system /home/mastodon/live/public/

scp -P 22 mastodon@123.123.123.123:/home/mastodon/live/.env.production /home/mastodon/live/

可以看一下配置文件有什么

vim /home/mastodon/live/.env.production

原文链接: https://technique.vfly2.com/2023/11/maintenance-for-mastodon-backup-update-migration/

版权声明:本博客所有文章除特別声明外,均为 AhFei 原创,采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 技焉洲 (technique.vfly2.com)

保持更新 ٩(•̤̀ᵕ•̤́๑)ᵒᵏᵎᵎᵎᵎ 清晰恒益的实用技能,欢迎使用 RSS 订阅,或在支持 ActivityPub 的平台关注 @vfly2tech@technique.vfly2.com 接收新文章的推送,如果能留言互动就更好了。

可在 Telegram 群组 https://t.me/vfly2 交流依文章步骤遇到的问题。

暂无评论

发送评论 编辑评论


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