デフォルトのサイトからDocker Managerをアップグレードしました。アップグレード後、ランチャーでアプリの再構築を実行するようメッセージが表示されました。指示通り実行しました。その後、PostgreSQLが更新されたので、再度再構築を実行するようメッセージが表示されました。これも実行しました。しかし、デフォルトのサイトは期待通りに動作している一方、2番目のサイトはすべてのデータが失われました。これは新規インスタンスではありません。システム投稿として「ようこそ」の投稿のみが残っています。
私が行った対処は、postgres_dataをpostgres_data_brockenに変更し、data_oldをpostgres_dataに変更して、再度再構築を試みました。PostgreSQLのバージョンが15から18にアップグレードされ、アプリの再構築が必要であるという同じ応答が返ってきましたが、結果は変わりませんでした。ご支援をお願いします。
sudo du -sh shared/standalone/postgres_data_old
678M shared/standalone/postgres_data_old
❯ sudo du -sh shared/standalone/postgres_data_brocken
412M shared/standalone/postgres_data
_brocken
2番目のサイトのデータベースをマイグレーションしているときに、何か問題が発生しているようです。
十分なディスク容量があることを確認してください。データベースサイズの約2倍が必要です。追加できる情報やサポートは残念ながらありませんが、このスレッドの手がかりを参照してください:
警告! アップグレードには大量の空きディスク容量(データベースサイズの2倍)が必要です。
DockerイメージをPostgreSQL 18にアップグレードするための変更を適用しました。コマンドラインからDiscourseを再構築するサイト管理者は、以前のPostgreSQL 15からPostgreSQL 18にアップグレードされます。2025年にPostgreSQL 15のアップデートが行われた際 にアップグレードを見送った場合、そのアップグレードをスキップして直接PostgreSQL 18に進むことができます。
以前にアップグレードを見送った場合は、app.yml内のPostgreSQLテンプレートを templates/postgres.13.template.yml から templates/postgres.template.yml に変更してください。
どのアップグレードでも同様ですが、作業を行う前にバックアップを取得することを強く推奨します。
ロケールの変更
過去には、OSのアップグレード時などにglibcが更新された際にインデックス破損が…
はい、確認はしましたが、マルチサイトアップグレードに関する情報は見つかりませんでした
postgres テンプレートファイルを確認しました。これは1つのデータベースのみを対象としています。これは異常です。既存のデータベースをループ処理して変更するべきでした。このシナリオで解決策を探している方のために、ここに残しておきます
DB_LIST=$(su postgres -c "/usr/lib/postgresql/${PG_MAJOR_OLD}/bin/psql -p 5432 -tAc \"select datname from pg_database where not datistemplate and datname != 'postgres'\"")
for DB in $DB_LIST; do
su postgres -c "/usr/lib/postgresql/${PG_MAJOR_OLD}/bin/pg_dump -Fd -j$(nproc --ignore=1) \"$DB\" -f /shared/postgres_dump/\"$DB\""
done