-
Notifications
You must be signed in to change notification settings - Fork 0
TearDownInstanceOnHeroku
何らかの事情でMastodonインスタンスの運用をやめる場合には、インスタンスに蓄積されたトゥートやアカウントの情報を取り出して保管することもできます。
この記事は書きかけです
インスタンスは別のホストに移動させて、同じドメインで運用を続ける場合には、DNSのレコードのTTLを小さくしておき、移動後にDNSレコードの更新内容が早く伝わるようにしておくとよいかもしれません。
移動先のインスタンスも仮のデータベースで動作確認しておくと良いかもしれません。
下記のコマンドでリクエストがインスタンスに届かないようにします。
heroku maintenance:on -a $APP_NAME
- 別のホストに移す場合、この段階で新しいインスタンスにDNSレコードを向けられるだろうか
メディアファイルを保管しておく場合には、下記のコマンドでトゥートに関連付けられていないファイルを削除することによって容量を節約できるかもしれません。
heroku run rake mastodon:media:clear
- できる?必要ある?
- 410 Goneを返すようにできると良さそう
下記の様なコマンドを実行してアプリケーションログを観察します。
heroku logs -t -a $APP_NAME
下記のようなSidekiqからのログが追加されなくなるまで待ちます。
2017-04-29T22:02:35.388915+00:00 app[web.1]: 17 TID-ovde969jk ProcessingWorker JID-f40380cbd9556aebbbfcd29e INFO: start
2017-04-29T22:02:35.395322+00:00 app[web.1]: 17 TID-ovdegppuw RemoteProfileUpdateWorker JID-e25247348cb93ce5921843a0 INFO: start
2017-04-29T22:02:35.396745+00:00 app[web.1]: 17 TID-ovde969jk ProcessingWorker JID-f40380cbd9556aebbbfcd29e INFO: done: 0.008 sec
2017-04-29T22:02:35.413290+00:00 app[web.1]: 17 TID-ovdegppuw RemoteProfileUpdateWorker JID-e25247348cb93ce5921843a0 INFO: done: 0.018 sec
-
heroku redis:cli -a $APP_NAME
で残りのキューの数がわかるかな?
これでデータベースの内容に矛盾がなくなったはずです。必要なら、データベースの内容を手元に取得しておきます。
heroku pg:backups:capture -a $APP_NAME
heroku pg:backups:download -a $APP_NAME
こうして取得したダンプファイルは下記の様なコマンドでPostgreSQLにインポートできます。
pg_restore --verbose --clean --no-acl --no-owner -h localhost -U myuser -d mydb latest.dump
今後Mastdonインスタンスとして運用する可能性がまったくなければ、アプリケーションを廃棄してしまうのが手軽です。下記のコマンドでadd-onもまとめて廃棄できます。
heroku apps:destroy -a $APP_NAME
将来復活させる可能性がある場合には、費用がかからないようにして保管しておくのが良さそうです。Dynoは0にスケールダウンすることで費用がかからなくなります。この作業をした月の分は、dynoが稼働していた時間に比例して費用がかかります。
heroku ps:scale web=0 worker=0 -a $APP_NAME
Dynoが稼働していなくても有料のadd-onの費用は発生します。とりあえずは廃棄して、復活させる時に再度生成する必要があります。Dynoと同様、add-onを廃棄した月には、廃棄するまでの時間に比例して費用がかかります。
heroku add-ons:destroy heroku-postgres:hobby-basic -a $APP_NAME
など。下記のコマンドで、有料のadd-onが残っていないか、Price欄を確認してみてください。
heroku add-ons -a $APP_NAME
必要ならS3等に保管してあるメディアファイルのバックアップや削除をします。
Contents in this wiki is copyright 2017 by zunda and licensed under a Creative Commons Attribution 4.0 International License.