Mastodonを容量不足の問題のため別サーバへ引っ越ししました。
移行手順を備忘録として残しておきます。
全体像が分かりやすいように多少シンプルに書いています。
前提
- サーバAからサーバBへ移すことを前提とする※どちらもnon-docker
- ドメインは同一のものを使用し、Aレコードを変更する
移行前の事前準備
- 移行することをインスタンス内で告知し、バックアップする手順を案内
- 公式のインストール手順を参考にサーバBへMastodonを新規で入れて動作させておく
- rsyncコマンド(下記がコマンド例)でサーバAのMastodonメディアファイルをサーバBへ同期させる
rsync -av --delete -e "ssh -p SSHのポート名" /home/サーバAユーザ/public_html/mastodon/public/system/ サーバBユーザ@サーバBのIPアドレス:/home/サーバBユーザ/public_html/mastodon/public/system/
- DNS切り替えのためドメインのTTLを短くしておく
移行作業
- サーバAとサーバBのMastodon系のサービスをstopさせる
- 下記のコマンドでサーバAのDBデータをエクスポート
pg_dump -U mastodon -Ft mastodon_production > /home/サーバAユーザ/mastodon_production.tar
- SFTPなどでサーバAのDBデータをサーバBに移す
- サーバBでエクスポートしたサーバAのDBデータをインポート
pg_restore -U postgres -d postgres -v -C -c -Ft /home/サーバBユーザ/mastodon_production.tar
-
移行前の事前準備
で実施したrsyncをもう一度実施して、差分が出た分の同期をとる - サーバBの
.env.production
ファイルのドメイン情報を書き換える - certbotコマンドなどでサーバBの証明書を新規発行
-
RAILS_ENV=production bundle exec rails mastodon:feeds:build
でホームの再構築※移行させると何故かホームが空っぽになるので -
bundle exec rails r 'Rails.cache.clear'
でRails(+ Redis & memcached) キャッシュのクリア - サーバBのMastodon系のサービスをstartさせる
- 動作の確認が取れたらドメインのTTLを元に戻しておく