もう少し詳細を教えていただけますか?私も同じ問題に遭遇しています
同じ問題に遭遇している方のために、私が行った手順の要約(AI生成)を以下に示します:
PG15を一時的に起動 → データベースをダンプ → PG18を使用 → ダンプをリストア
つまり、このアップグレードはイメージベースですね。
つまり、Discourse の旧バージョンのインストールを選択した場合でも、イメージは依然として18へのアップグレードを強制するのでしょうか?
わかりました。
修正されたようですが、ChatGPT が提案した方法はエラーを修正したものの、データベースを完全に消去してしまいました。つまり、アカウント、トピック、投稿がすべてなくなりました。
幸いにも、比較的新しい開発者向けフォーラムだったので、大きな損失にはなりません。
今日このようなことが起きないよう、細心の注意を払いました。各ステップの後に、何も削除されないという確認が表示され、不要なデータを削除する前に、すべてのデータが移行されたことを三重に確認したという印象を受けました。
しかし、もし何かが誤って実行されても、失われるデータはテーマコンポーネントの設定のみでした。
こんにちは。私のフォーラムにはかなり大きなデータベース(約80GB)があります。バージョン13から15への移行にあたり、サーバーを変更し、新規インストールとリストアを行いました。
同じ移行方法をお勧めしますか?(アップグレードを試みましたが、照合順序のエラーが発生しました)
このトピックの前半で、スタッフは以下のように述べていました:
したがって、それは選択肢の一つです。
あなたはすでに以下のように述べていました:
直接アップグレードを試みましたが、照合順序(collation)のエラーが発生しました。
照合順序のエラー?既存の Discourse のバージョンは何ですか?
遭遇したエラーやコンソール出力を投稿してみてください。
かなり大きなデータベース(約 80 GB)
しかし、スペースが不足しませんでしたか(既存のデータベースサイズの 2 倍を推奨)?
やあ、スペースは十分あるよ(250 GB 空き)。エラーは「照合順序の不一致」だったけど、app.yml ファイルに UTF 文字列が含まれていないんじゃないかと思う。
つまり、Discourse の古いバージョンを選択してインストールした場合でも、イメージは依然として 18 へのアップグレードを強制するのでしょうか?
discourse_docker イメージでは合理的なデフォルト値を提供するように努めていますが、あらゆる使用ケースに対応することは不可能です。もし希望があれば、イメージをカスタマイズしてバージョンを固定することも自由に行えます。
ある程度、依存関係のバージョンは当社のホスティング要件を反映しています。つまり、内部でベースイメージを使用しているということです。これにより、イメージが古くなりすぎることは防げますが、同時にメンテナンスできる組み合わせには限りがあります。
こんにちは。私のフォーラムにはかなり大きなデータベース(約 80 GB)があります。バージョン 13 から 15 へのアップグレードのために、サーバーを切り替え、新規インストールを行い、データを復元しました。
このアプローチはまだ推奨されていますか?(直接アップグレードを試みましたが、照合順序のエラーが発生しました)
より慣れ親しんだ方法であれば、完全に有効な手法です。
エラーは「照合順序の不一致」でした。
警告が古いデータベースのダンプ準備中に生成された場合、心配する必要はありません。pg_dump を実行する目的で、古いデータディレクトリに対してサーバーを実行しているだけです。ダンプが新しいサーバーに復元されると、インデックスは再作成されます。
この警告が表示される理由としては、過去数日以内に Debian Bookworm から Trixie へアップグレードし、glibc のバージョンを変更する新しいベースイメージのバージョンをリリースしたことが挙げられます。libc プロバイダーに基づくロケール(おそらくこれを使用していたと思われます)は glibc のアップグレード間で安定していません。そのため、アップグレードスクリプトが古いデータをダンプするために Postgres サーバーを起動すると、照合順序の不一致に関する警告が表示されます。
照合順序の不一致こそが、pg_upgrade を実行する代わりにダンプと復元を行う主な理由です。データベースが builtin プロバイダーを使用する C.UTF-8 を使用するようにすれば、glibc のアップグレードが照合順序に影響を与えることはなくなります。
警告が古いデータベースのダンプ準備中に発生したものであれば、心配する必要はありません。
今夜アップグレードを実行しましたが、計画通りに進みました。同じデータベース照合順序の警告が表示されましたが、無視してよいようです。ありがとうございます。
app.yml に以下を追加してみましたが、
app.yml
templates:
- “templates/postgres.15.template.yml”
- “templates/redis.template.yml”
- “templates/web.template.yml”
- “templates/web.ratelimited.template.yml”
アップグレードを先延ばしにしようとしたところ、次のエラーが発生しました。
Errno::ENOENT: No such file or directory @ rb_sysopen - /etc/postgresql/15/main/postgresql.conf
Location of failure: /usr/local/lib/ruby/gems/3.4.0/gems/pups-1.4.0/lib/pups/replace_command.rb:11:in ‘IO.read’
replace failed with the params {“filename” => “/etc/postgresql/15/main/postgresql.conf”, “from” => “data_directory = ‘/var/lib/postgresql/15/main’”, “to” => “data_directory = ‘/shared/postgres_data’”}
bootstrap failed with exit code 1
** FAILED TO BOOTSTRAP ** please scroll up and look for earlier error messages, there may be more than one.
./discourse-doctor may help diagnose the problem.
ベースコンテナが間違っているようです。./launcher rebuild を実行しましたか?これにより git pull が実行されるはずですが、状況が変わるか確認するために git pull を直接実行してみてください。