#fedibird 2度に分けて行ったメンテですが、大きな変更点として、PostgreSQL 13への移行があります。また、Makaraによるリードレプリカを当面行わないことにしました。
ざっくり言うと、12から13へ移行するにあたって、ロジカルレプリケーションを使って別サーバへレプリケーションを通じてPostgreSQLのメジャーバージョンアップを行い、その上であらためて元のサーバへ戻す、というようなオペレーションにチャレンジしました。
だんだんデータベースが大きくなってきたため、pg_upgradeでサクッとあげればいいや、ってのが難しくなってきましたね。
最初はそれで済ませようと思ったんですが、1〜2時間かかること、ローカルストレージの空きが足りないことなど、やってみると色々と問題がでてまいりました。
リードレプリカの方は、元々実験的な取り組みで、扱いにくい面も目立ってきていたため、レプリケーション先のサーバは待機させて読み出しには使わない運用に変更しました。
また、Mastodonのアップデート時にマイグレーションに失敗して発覚しがちな、重複レコード・インデックスの破損問題の検証・テストなども行っています。
Fedibirdは比較的新参のサーバで、機能開発のために頻繁にマイグレーションを行っていることもあり、今のところそういったデータベースの潜在的な破損には遭遇していません。今回も問題は発見されませんでした。
他方、私が管理する他のサーバでは、実際に重複レコードやインデックスの破損、ロケールの問題などが発覚しています。これまで修復を含めた対処を何度か行いました。
現在、ThibGさん(Eugenさんに次いでコミットしているMastodonの主要開発者の方です)が調査・原因の究明にあたり、発見された問題点を整理し、運用中のサーバの重複レコード対応とインデックスの修復、問題を起こしやすいロケール設定などへの警告や変換などの、対応コードとドキュメントの整備を行っています。
これらが有効に機能するかどうかの確認を兼ねて、実際にいろいろ試してみているところです。