サポートされているPostgreSQLのバージョン

PostgreSQL のサポートされているデータベースバージョンに関する記載はありますか?

Discourse の各リリースバージョンごとに、特に PostgreSQL のバージョンがサポートされなくなった場合の情報があると非常に助かります。

Postgres は Discourse の Docker コンテナにバンドルされているため、基本的に手動での操作は不要です。Discourse チームは、新しいリリースが公開され、適切にテストされた段階で Postgres のバージョンをアップグレードします。直近のアップグレードはバージョン 13 への移行でした。そのアップグレードの詳細は以下でご確認いただけます:

「いいね!」 3

まあ、誰もがバンドルされた PostgreSQL データベースを使っているわけではありません。

現在のインストールドキュメントでは、Postgres 10 以降が必要バージョンとして記載されています。

ただし、公式にサポートされている構成は Docker コンテナを使用したものに限られます。

「いいね!」 2

はい、サポートされている PostgreSQL のバージョン(「強くサポート」されているかどうかは別として、Docker ビルドの観点から)は、discourse_dockertemplates ディレクトリにリストされています。

ただし、可能な限り早く最新の PostgreSQL バージョン(現在はバージョン 13)に移行することを強くお勧めします。

ただし、組織内の何らかの制約により、ホスト上で最新バージョンを実行できない場合は、discourse_dockertemplates ディレクトリが調査に役立ちます。

「いいね!」 4

3年後に確認: Dockerテンプレート はまだ PG_MAJOR=13 となっていますが、PostgreSQLの新しいバージョン があります:2021年の14、2022年の15、2023年の16です。

したがって、最新のPostgreSQL 16(2028年にEOL)ではなく、バージョン13(2025年にEOL)を使用することを推奨しているのでしょうか?

はい、その通りです。

すでにバージョン15で稼働しているサイトがいくつかあり、来年には13からアップデートする予定です。

「いいね!」 1

質問: 現在の状況はどうなっていますか?外部のPostgreSQLデータベースを実行しており、データベースサーバーを13からアップグレードしたいと考えています。PostgreSQL 16は2023年9月14日にリリースされました。Discourseで使用できますか?データベース自体に移行手順は必要になりますか?(サーバー側のグローバル移行手順は除く)

PostgreSQL 13 は引き続き公式サポート対象バージョンであり、先月リリースされたバージョン 13.15 もサポートされています。

バージョン 15 を実行しているサイトが多数あり、これはセルフホストユーザー向けに最終的にアップデートを提供する予定の、動作確認済みのバージョンです。

バージョン 16 は開発者マシン以外での広範なテストは行われていませんが、もし試してみたいという冒険心があり、何か問題が発生するかどうかを確認したい場合は、結果をお知らせください!

「いいね!」 1

Discourse は Postgres に対して何か特別なことを行っていますか?それにより、Postgres の新しいバージョンへのアップグレードが単純なダンプと復元で機能しない可能性が示唆されますか?

このスレッドを再度上げますが、PostgreSQL 15にアップグレードする理由があるのでしょうか、それとも16や17にするべきでしょうか?

また、PostgreSQLのアップグレードはいつ頃を予定していますか?

皆さん、AWS RDS PostGre 16.4 に移行したばかりで、動作しているようです。

Discourse のバージョンは 3.4.0.beta3-dev です。

まだすべてのボタンを押したわけではありませんが :slight_smile: 、ボード自体は動作しているようですが…

以下のエラーのため、バックアップを作成できません。

[2024-12-13 08:36:07] '/var/www/discourse/tmp/backups/default/2024-12-13-083607' が存在することを確認中...
[2024-12-13 08:36:07] '/var/www/discourse/public/backups/default' が存在することを確認中...
[2024-12-13 08:36:07] メタデータを更新中...
[2024-12-13 08:36:07] データベースの public スキーマをダンプ中...
[2024-12-13 08:36:08] pg_dump: エラー: サーバーのバージョン: 16.4; pg_dump のバージョン: 13.18 (Debian 13.18-1.pgdg120+1)
[2024-12-13 08:36:08] pg_dump: エラー: サーバーのバージョンが一致しないため、中止します
[2024-12-13 08:36:08] 例外: pg_dump が失敗しました

奇妙なことに、内部メカニズムでデータをインポートすることはできました。

私がやったこと:

  1. DB をセットアップしました(ユーザー、データベース、権限)。
  2. app.yml で設定を行いました。
  3. Discourse 内からバックアップを作成しました。
  4. アプリを再構築しました(DB のマイグレーションは成功しました → DB は空になります)。
  5. コンテナ内からバックアップを復元しました(launcher enter app, discourse enable_restore, discourse restore …)。
  6. 完了しました(すべて成功し、新しいバックアップを作成しようとするまで、すべてが正常に動作しているように見えました :-))。

これを解決する方法はありますか?

よろしくお願いいたします。

JP

「いいね!」 1

皆さん、面白くなってきましたね。
数日間仕事をしておらず、新しい会社の掲示板をチェックしていませんでした。

今日チェックしたところ、スケジュールされたバックアップは正常に機能しましたが、手動バックアップを再度試したところ、失敗しました :thinking:

スケジュールされたバックアップ:

データベースのパブリック スキーマをダンプしています...
[2024-12-04 06:02:16] pg_dump: 最後の組み込み OID は 16383 です
[2024-12-04 06:02:16] pg_dump: 拡張機能を読み込んでいます
[2024-12-04 06:02:16] pg_dump: 拡張機能メンバーを識別しています
[2024-12-04 06:02:16] pg_dump: スキーマを読み込んでいます
[2024-12-04 06:02:16] pg_dump: ユーザー定義テーブルを読み込んでいます
[2024-12-04 06:02:16] pg_dump: ユーザー定義関数を読み込んでいます
[2024-12-04 06:02:16] pg_dump: ユーザー定義型を読み込んでいます
......
pg_dump: テーブル "public.themes" の内容をダンプしています
[2024-12-04 06:02:19] pg_dump: テーブル "public.top_topics" のデータを処理しています
[2024-12-04 06:02:19] pg_dump: テーブル "public.top_topics" の内容をダンプしています
[2024-12-04 06:02:19] バックアップを最終処理しています...
[2024-12-04 06:02:19] アーカイブを作成しています: scp-talk-2024-12-04-060216-v20241127034553.tar.gz
[2024-12-04 06:02:19] アーカイブが既に存在しないことを確認しています...
[2024-12-04 06:02:19] 空のアーカイブを作成しています...
[2024-12-04 06:02:19] データダンプをアーカイブしています...
[2024-12-04 06:02:19] アップロードをアーカイブしています...
[2024-12-04 06:02:19] 一時ディレクトリ '/var/www/discourse/tmp/backups/default/2024-12-04-060216' を削除しています...
[2024-12-04 06:02:19] アーカイブを gzip 圧縮しています。これには時間がかかる場合があります...
[2024-12-04 06:02:19] バックアップの after_create_hook を実行しています...
[2024-12-04 06:02:19] 古いバックアップを削除しています...
[2024-12-04 06:02:19] クリーンアップを実行しています...
[2024-12-04 06:02:19] '.tar' の残り物を削除しています...
[2024-12-04 06:02:19] バックアップが完了したことをマークしています...
[2024-12-04 06:02:19] ディスク統計情報を更新しています...
[2024-12-04 06:02:19] バックアップ終了を '<me>' に通知しています...

手動バックアップ:

[2024-12-16 10:03:54] '<me>' がバックアップを開始しました!
[2024-12-16 10:03:54] バックアップを実行中としてマークしています...
[2024-12-16 10:03:54] '/var/www/discourse/tmp/backups/default/2024-12-16-100354' が存在することを確認しています...
[2024-12-16 10:03:54] '/var/www/discourse/public/backups/default' が存在することを確認しています...
[2024-12-16 10:03:54] メタデータを更新しています...
[2024-12-16 10:03:54] データベースのパブリック スキーマをダンプしています...
[2024-12-16 10:03:54] pg_dump: エラー: サーバーのバージョン: 16.4; pg_dump のバージョン: 13.18 (Debian 13.18-1.pgdg120+1)
[2024-12-16 10:03:54] pg_dump: エラー: サーバーのバージョンが一致しないため、中止しています
[2024-12-16 10:03:54] 例外: pg_dump が失敗しました

うーん、何かアイデアはありますか?

非常に奇妙です :frowning:

外部データベースを使用して 3.4.0.beta3 にアップグレードすると、バックアップが失敗することを確認しました。

インスタンスは 3.4.0.beta3 (タグ) が 2 つあります。1) Postgres-in-Docker (デフォルト)。2) 外部 Postgres (ローカルセルフホスト)。

1 つ目は、スケジュールと手動の両方でバックアップできます。

[2024-12-23 11:11:43] バックアップを稼働中としてマークしています...
[2024-12-23 11:11:44] '/var/www/discourse/tmp/backups/default/2024-12-23-111143' が存在することを確認しています...
[2024-12-23 11:11:44] '/var/www/discourse/public/backups/default' が存在することを確認しています...
[2024-12-23 11:11:44] メタデータを更新しています...
[2024-12-23 11:11:44] public スキーマのデータベースをダンプしています...
[2024-12-23 11:11:44] pg_dump: 最後の組み込み OID は 16383 です
[2024-12-23 11:11:44] pg_dump: 拡張機能を読み込んでいます
[2024-12-23 11:11:44] pg_dump: 拡張機能メンバーを識別しています
[2024-12-23 11:11:44] pg_dump: スキーマを読み込んでいます
...

2 つ目は失敗します。

[2024-12-21 03:35:21] バックアップを稼働中としてマークしています...
[2024-12-21 03:35:21] '/var/www/discourse/tmp/backups/default/2024-12-21-033521' が存在することを確認しています...
[2024-12-21 03:35:21] '/var/www/discourse/public/backups/default' が存在することを確認しています...
[2024-12-21 03:35:21] メタデータを更新しています...
[2024-12-21 03:35:21] public スキーマのデータベースをダンプしています...
[2024-12-21 03:35:22] pg_dump: エラー: サーバーバージョン: 16.6 (Ubuntu 16.6-0ubuntu0.24.04.1); pg_dump バージョン: 13.18 (Debian 13.18-1.pgdg120+1)
[2024-12-21 03:35:22] pg_dump: エラー: サーバーバージョンの一致がないため中止します
[2024-12-21 03:35:22] 例外: pg_dump が失敗しました
...
「いいね!」 2

昨日アップグレードしましたが、バージョン不一致のためスケジュールされたバックアップが失敗することを確認しました。

Dockerに入り、新しいpostgresql-clientをインストールすることで修正できます。

/var/discourse/launcher enter app
apt update
apt install postgresql-client
「いいね!」 2

皆さん、こんにちは。

RDSで暗号化されたPostGre DBに切り替えました。昨日も同じことをしていました(以前の手順で説明したように、バックアップを作成し、app.ymlを編集し、再構築するなど)が、昨日も機能していました。

今日、PRODで試したところ、このエラーが発生しました:frowning:

discourse_functions スキーマに不足している関数を作成中…
ダンプファイルを復元中…(これには時間がかかる場合があります)
SET
SET
SET
ERROR: unrecognized configuration parameter “transaction_timeout”
EXCEPTION: psql failed: ERROR: unrecognized configuration parameter “transaction_timeout”

DBeaverで直接DBで試しましたが、昨日問題なく動作していたDBでも同じエラーが発生しました。
どちらの場合もバックアップは最新でした。

一晩で何か変更しましたか? :smiley:

よろしくお願いします。

WS

こんにちは。

バックアップファイルで行われているダンプを確認しました。

先頭に以下のSET文が含まれています。

SET statement_timeout = 0;
SET lock_timeout = 0;
SET idle_in_transaction_session_timeout = 0;
SET transaction_timeout = 0;
SET client_encoding = ‘UTF8’;
SET standard_conforming_strings = on;

transaction_timeout パラメータは、ここで奇妙です :thinking:

なぜなら

transaction_timeoutPostgreSQL 17 で追加されたからです。

ここに記載されています:

https://pgpedia.info/t/transaction_timeout.html

助けが必要です :slight_smile:

よろしくお願いします!

Cheers,

Wurzelseppi

「いいね!」 1

postgresql-client の更新を、コンテナの YAML を変更することによって、再構築の自動化された一部として行う方法はありますか?