#fedibird 昨日行っていたメディア削除は無事に完了し、700GB超だった容量が230GBほどになりました。たぶん月額$12〜$13ぐらいの節約になるかな。
そして今朝から、データベースのリードレプリカを有効にしました。
Fedibirdのデータベースは、独立した2つのVPS上にあって、それぞれ、マスターと、それの複製(レプリカ)になっています。
これまでは、マスターだけを更新・参照していて、レプリカは非常時に備えて待機しているだけでした。
これを、更新をマスターに、参照をレプリカに対して行うように設定しました。
この運用方法は、2台のサーバで手分けして対応するようになるので、1台あたりの負担が軽くなるメリットがあります。
同期レプリケーションが必須になった分、更新の完了に少し時間がかかるようになっていますが、体感できるほどではないと思います。
同期レプリケーションは、postgresql.confに
synchronous_commit = remote_apply
などの設定が必要です。
常時バックアップのレプリカであれば、非同期の方がパフォーマンス面で有利なので、offの方が良いでしょう。
リードレプリカの設定については、Mastodonの公式ドキュメントに記載があります。
https://docs.joinmastodon.org/admin/scaling/#read-replicas
ソースコード上の config/database.yml にdb設定を直接書くわけにはいかないので、ウチではこんな風に変更しています。環境変数を使って、.env.productionにデータベース接続を記述します。pgheroも設定しておいた方がいいですね。
https://github.com/fedibird/mastodon/commit/32abc914c589ca2e3be3c952aeeeea2fe6aaebd9