最新バージョンへのアップグレードに関する問題

こんにちは、Discourse を最新バージョンに更新しようとしています。

FAILED
--------------------
Pups::ExecError: /root/upgrade_postgres が失敗しました。戻り値: #<Process::Status: pid 45 exit 1>
失敗した場所: /pups/lib/pups/exec_command.rb:112:in `spawn'
実行失敗。パラメータ: "/root/upgrade_postgres"
1cafe54cd6661316d8e9e393c54f73ab89bc3f5e70e104f6c5e4f8794053c09c
** ブートストラップに失敗しました ** 上記にスクロールして、以前のエラーメッセージを確認してください。複数のエラーが存在する可能性があります。
./discourse-doctor を実行すると問題の診断に役立つ場合があります。

また、以下の出力もあります。

 成功しました。現在、以下のコマンドでデータベースサーバーを起動できます:

    pg_ctlcluster 10 main start

警告: 選択された stats_temp_directory /var/run/postgresql/10-main.pg_stat_tmp は、クラスター所有者に対して書き込み可能ではありません。この設定を postgresql.conf に追加していません。
Ver Cluster Port Status Owner    Data directory              Log file
10  main    5433 down   postgres /var/lib/postgresql/10/main /var/log/postgresql/postgresql-10-main.log
update-alternatives: 警告: リンクグループ postmaster.1.gz が壊れているため、代替ファイル /usr/share/postgresql/12/man/man1/postmaster.1.gz の再インストールを強制しています
invoke-rc.d: 現在のランレベルを判定できませんでした
invoke-rc.d: policy-rc.d により start の実行が拒否されました。
postgresql-common (213.pgdg100+1) のトリガーを処理中...
インストールされている myspell/hunspell パッケージから PostgreSQL 辞書を構築中...
不要な辞書ファイルを削除中:
PostgreSQL 10 データベースサーバー (main) を停止中...
PostgreSQL 12 データベースサーバー (main) を停止中...
整合性チェックを実行中
-----------------------------
クラスターバージョンのチェック                                    ok

ソースクラスターは正常にシャットダウンされませんでした。
失敗、終了

tail -f shared/standalone/log/var-log/postgres/current コマンドの出力:

2020-06-14 01:37:02.155 UTC [3508] FATAL: データディレクトリ "/shared/postgres_data" の所有者が正しくありません
2020-06-14 01:37:02.155 UTC [3508] HINT: サーバーは、データディレクトリの所有者であるユーザーによって起動される必要があります。

更新の延期

次の再ビルド中に更新を延期する必要がある場合は、app.yml ファイルで PostgreSQL テンプレートを "templates/postgres.template.yml" から "templates/postgres.10.template.yml" に変更することで交換できます。

これは推奨されません。一部のサイト管理者が後で変更を元に戻すことを忘れる可能性があるためです。

これを適用したところ、Discourse フォーラムがオンラインになりました。次に何をすべきでしょうか? 現在、“templates/postgres.10.template.yml” を使用しています。

アイデアはありますか?私はまだ「templates/postgres.10.template.yml」を使用しています。

以下の手順を試してください:

  1. app.yml を編集し、"templates/postgres.10.template.yml""templates/postgres.template.yml" に変更します。

  2. 停止コマンドを実行します:./launcher stop app

  3. 再構築を試みます:./launcher rebuild app

「いいね!」 2

アップグレード完了

pg_upgrade ではオプティマイザ統計は転送されないため、
新しいサーバーを起動したら、以下を実行することを検討してください:
./analyze_new_cluster.sh

このスクリプトを実行すると、古いクラスタのデータファイルが削除されます:
./delete_old_cluster.sh

Postgres のアップグレード完了

古い 10 バージョンのデータベースは /shared/postgres_data_old に保存されています

アップグレードを完了するには、再度以下を使用して再構築してください:

./launcher rebuild app

Discourse フォーラムは現在オフラインです。

上記の指示通り、./launcher rebuild app を再度実行しようとしています。

はい、それは予想通りです。

はい、指示に従ってください。すぐに復旧するはずです。

「いいね!」 1

興味深くて素晴らしいです。アップデートが正常に完了しました。以前も同じ方法を何度か試しましたが、うまくいったことはありませんでした。

空き容量を確保するために、以下のコマンドを使用する必要がありますか?

pg_upgrade は統計情報を転送しないため、
新しいサーバーを起動したら、以下を実行することを検討してください:
    ./analyze_new_cluster.sh

このスクリプトを実行すると、旧クラスターのデータファイルが削除されます:
    ./delete_old_cluster.sh

ありがとうございます!

FAQに記載されている投稿更新のオプションタスクを実行できます。

「いいね!」 1

素晴らしい。ありがとうございます!

「いいね!」 1

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.