PostgreSQL 18 업그레이드 후에도 Discourse가 PostgreSQL 15 바이너리를 사용 중

현재 /var/discourse 경로에서 스탠드얼론 Docker 컨테이너로 Discourse를 실행 중입니다.

내장된 PostgreSQL 데이터베이스를 15 버전에서 18 버전으로 업그레이드하려고 시도했습니다. 업그레이드가 완료된 것처럼 보였고, 활성 데이터 디렉터리가 이제 다음과 같이 보고하고 있습니다:

/shared/postgres_data/PG_VERSION
18

그러나 다시 빌드된 Discourse 컨테이너에는 여전히 PostgreSQL 15 바이너리만 포함되어 있습니다:

/usr/lib/postgresql/15/bin/postgres
postgres (PostgreSQL) 15.18

PostgreSQL 서비스는 다음과 같이 실행되도록 구성되어 있습니다:

/usr/lib/postgresql/15/bin/postmaster -D /etc/postgresql/15/main

반면 실제 Discourse 데이터 디렉터리는 다음 위치에 마운트되어 있습니다:

/shared/postgres_data

따라서 PostgreSQL은 다음과 같은 오류로 실패합니다:

FATAL: database files are incompatible with server

DETAIL: The data directory was initialized by PostgreSQL version 18,
which is not compatible with this version 15.18
(Debian 15.18-1.pgdg12+1).

최근 Discourse Docker 이미지는 PostgreSQL 18 바이너리를 포함해야 한다고 알고 있습니다. app.yml을 PostgreSQL 18 템플릿을 사용하도록 변경하고 앱을 다시 빌드했지만, 생성된 컨테이너에는 여전히 PostgreSQL 15 바이너리가 있으며 서비스 스크립트는 여전히 /etc/postgresql/15/main을 가리키고 있습니다.

현재 서비스 구성의 관련 부분은 다음과 같습니다:

HOME=/var/lib/postgresql USER=postgres exec thpoff \
chpst -u postgres:postgres:ssl-cert -U postgres:postgres:ssl-cert \
/usr/lib/postgresql/15/bin/postmaster -D /etc/postgresql/15/main

질문은 다음과 같습니다:

  1. PostgreSQL 18 바이너리가 실제로 포함되도록 Discourse 컨테이너를 올바르게 다시 빌드하거나 업데이트하는 방법은 무엇인가요?

  2. app.yml에서 사용해야 하는 특정 템플릿 또는 이미지 태그가 있나요?

  3. PostgreSQL 18이 사용 가능해지면, 기존 /shared/postgres_data 디렉터리에 대해 시작하는 지원되는 절차는 무엇인가요?

PostgreSQL 18 데이터 디렉터리를 삭제하거나 재초기화하지 않았습니다. 이전 PostgreSQL 15 데이터를 복원하는 것보다는 업그레이드된 클러스터를 복구하는 것이 좋습니다.

1개의 좋아요

게시물이 기존 주제에 병합되었습니다: 자체 호스팅 사용자를 위한 PostgreSQL 18 업데이트