자체 호스팅 사용자를 위한 PostgreSQL 18 업데이트

저는 /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개의 좋아요