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

Is there somewhere a note, which postgresql db versions are supported?

Would be great to have something for each released discourse version - especially if a postgresql version is no longer supported.

Postgres is bundled in with the Docker container for Discourse, so this is generally hands-off. The Discourse team upgrades the Postgres version as new releases come out and they are properly tested. The most recent upgrade was to version 13. You can see the details of that upgrade here:

「いいね!」 3

Well, not everyone is using the bundled postgres db.

The current install doc lists Postgres 10+ as the required version:

https://github.com/discourse/discourse/blob/master/docs/INSTALL.md

That said, the only officially supported setups are using Docker containers.

「いいね!」 2

Yes, the versions of postgres which are “supported” (from a docker build perspective, not all “strongly supported”) are listed in the templates directory of discourse_docker

Having said that, it is highly recommended to move to the latest version of postgres, currently version 13, as soon as you can.

However, if you are running Discourse on a host where you cannot run the latest version because of some local constraint in your organization; the discourse_docker templates directory is a good place to research.

「いいね!」 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

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