pg_dump는 PostgreSQL의 더 새로운 버전으로 데이터를 전송하는 데 사용되므로, pg_dump의 출력은 pg_dump 버전보다 새로운 PostgreSQL 서버 버전에 로드될 수 있을 것으로 예상됩니다. pg_dump는 자체 버전보다 오래된 PostgreSQL 서버에서 덤프를 생성할 수도 있습니다. (현재, 버전 9.2까지의 서버가 지원됩니다.) 그러나 pg_dump는 자체 주요 버전보다 새로운 PostgreSQL 서버에서 덤프를 생성할 수 없습니다. 잘못된 덤프를 생성할 위험을 감수하기보다는 시도조차 거부합니다. 또한, 덤프가 해당 버전의 서버에서 생성된 경우에도 pg_dump의 출력이 더 오래된 주요 버전의 서버에 로드될 수 있다는 보장은 없습니다. 덤프 파일을 더 오래된 서버에 로드하려면, 더 오래된 서버가 이해하지 못하는 구문을 제거하기 위해 덤프 파일을 수동으로 편집해야 할 수 있습니다.
아, 실수였네요. PR을 읽었다고 생각했는데 말입니다. 저는 영어 모국화자이고 박사 학위도 있는데, 좀 더 잘할 수 있다고 생각했을 텐데요.
아니요. 이 코드가 베이스 이미지를 빌드하는 부분이라 그렇게 할 수 없습니다.
그래서 제 수정안은 현재로서는 최선인 것 같습니다. 다만, 제가 더 영리했다면 apt-get update로 가져오는 apt 관련 항목들을 제거했을 텐데 말입니다.
PG13을 원하지만 더 최신 버전은 원하지 않는다는 것을 여러 사람과 시스템에게 설득하는 것이 종종 어렵기 때문에, 다른 분들도 이 문제를 겪을 것이라 생각합니다. 또한, Discourse가 PG15로 작동한다는 것을 아는 누군가가 꽤 오래전에 그렇게 말한 것 같기도 합니다.
여러분 안녕하세요, 오늘 이 문제를 겪었습니다. 증상이 대략 6일 동안 백업 실패에 대한 알림을 계속 받았다는 것이었고, 주요 로그 줄은 다음과 같았습니다:
[2025-06-14 03:30:20] pg_dump: error: aborting because of server version mismatch
[2025-06-14 03:30:20] pg_dump: detail: server version: 16.9; pg_dump version: 15.12 (Debian 15.12-1.pgdg120+1)
저는 Digital Ocean 드롭렛에서 실행되는 Ubuntu 환경에서 권장 설치 가이드를 사용하여 Discourse를 운영합니다. 다만 postgres 컨테이너 대신 Digital Ocean의 관리형 Postgres 데이터베이스를 사용하고 있습니다. 제 데이터베이스를 확인해 보니 pg 16이 실행 중입니다. 최근에 업그레이드된 것 같지는 않고(어쨌든 주요 버전 업그레이드가 자동으로 이루어질 것 같지도 않지만), 확인을 위해 지원팀에 이메일을 보냈습니다.
어쨌든, 제 조사 결과 이 페이지로 이어졌습니다. @pfaffman 님이 게시한 YAML을 어디에 배치해야 할지 확신이 서지 않아서 명령어를 수동으로 실행했고, 이 문제를 마주치는 다른 분들을 위해 공유하고자 합니다:
cd /var/discourse
launcher enter app
apt list --installed | grep postgres # 현재 설치된 버전이 15임을 확인하기 위함