저희 discourse 인스턴스의 데이터베이스는 로컬 컨테이너가 아니라 중앙 데이터베이스 클러스터를 사용하고 있습니다. 최근 중앙 PostgreSQL이 18.3 버전으로 업데이트되었습니다. 그런데 discourse 백업이 실패하는 것을 확인했습니다:
[2026-05-19 03:37:37] [STARTED]
[2026-05-19 03:37:37] 'system' has started the backup!
[2026-05-19 03:37:37] Marking backup as running...
[2026-05-19 03:37:37] Making sure '/var/www/discourse/tmp/backups/default/2026-05-19-033737' exists...
[2026-05-19 03:37:37] Making sure '/var/www/discourse/public/backups/default' exists...
[2026-05-19 03:37:37] Updating metadata...
[2026-05-19 03:37:37] Dumping the public schema of the database...
[2026-05-19 03:37:37] pg_dump: error: aborting because of server version mismatch
[2026-05-19 03:37:37] pg_dump: detail: server version: 18.3 (Ubuntu 18.3-1.pgdg24.04+1); pg_dump version: 15.15 (Debian 15.15-1.pgdg12+1)
[2026-05-19 03:37:37] EXCEPTION: pg_dump failed
[2026-05-19 03:37:37] /var/www/discourse/lib/backup_restore/creator.rb:173:in 'BackupRestore::Creator#dump_public_schema'
/var/www/discourse/lib/backup_restore/creator.rb:36:in 'BackupRestore::Creator#run'
/var/www/discourse/lib/backup_restore.rb:13:in 'BackupRestore.backup!'
/var/www/discourse/app/jobs/regular/create_backup.rb:10:in 'Jobs::CreateBackup#execute'
이 문제를 해결할 수 있는 아이디어가 있을까요?
Ethsim2
(Ethan )
5월 19, 2026, 11:02오전
2
이것은 PostgreSQL 클라이언트/서버 버전 불일치로 보입니다.
백업은 pg_dump 버전이 15.15인 Discourse 컨테이너에서 실행되고 있지만, 외부 PostgreSQL 서버는 18.3입니다:
server version: 18.3; pg_dump version: 15.15
Discourse 팀이 권장하지 않는 한 Discourse 컨테이너를 수정하는 것은 신중해야 합니다. 제 첫 번째 생각은 외부 데이터베이스 클러스터를 Discourse가 현재 기대하거나 지원하는 PostgreSQL 버전과 일치시키는 것입니다.
네, 이해했습니다. 이 경우 다른 프로젝트에서 동일한 데이터베이스 클러스터를 사용해야 했기 때문에 18개 이상을 사용할 수밖에 없었습니다. 음, 그렇다면 discourse를 위해 15개만 사용할 수 있는 별도의 데이터베이스 서버가 필요할 것 같습니다.
CDCK 측에서 어떤 의견이 있으신가요?
클라이언트를 제자리에서 업그레이드할 수 있을까요?
PG 18과 호환성을 입증한 것으로 보이는데, 이는 프로덕션 데이터베이스로 사용 중이므로 이 작업은 리스크가 낮을 것 같습니다.
이전에 외부 PostgreSQL 18과 더미 Discourse 설치를 사용하여 간단한 테스트를 해보았으며, 문제는 발견되지 않았습니다. 하지만 솔직히 말하면, 이는 “간단하고 대충” 한 테스트였고 “깊은” 테스트는 아니었습니다. 어쨌든 2주 동안 문제가 없이 실행되고 있으므로 괜찮다고 생각합니다. 현재까지의 유일한 문제는 Discourse 내부 백업입니다. 한편, 데이터베이스 서버 자체(LXC에서 실행 중)는 별도로 백업되고 있습니다.
ted
(Ted Johansson)
5월 20, 2026, 5:27오전
7
Thomas_Rother:
CDCK 측에서 어떤 의견이 있을까요?
과거 정책은 두 버전마다 업그레이드하는 것이었습니다. 그러나 PostgreSQL 17이 출시된 지 1.5년이 지났는데도 공식 Docker 이미지는 여전히 15를 사용하고 있으므로, 이것이 여전히 유효한 정책인지 확실하지 않습니다.
과거에 유사한 주제에 대한 토론이 거의 동일하게 존재하며 참고할 수 있습니다. 예: Any chance to upgrade the postgres-client version?
단순한 생각인데 - pg 서버에서 명령줄을 통해 직접 덤프를 만들 수 있나요?
pfaffman
(Jay Pfaffman)
5월 20, 2026, 3:47오후
9
app.yml에 코드를 추가하여 Postgres를 해당 버전으로 업데이트할 수 있습니다. 이전에 한 번 해본 적이 있지만, 메모를 찾을 수 없습니다. 가장 쉬운 방법은 컨테이너에 들어가서 올바른 Postgres 클라이언트가 설치되도록 apt 명령을 실행한 뒤 백업을 시도하는 것입니다. 백업이 정상적으로 작동하면, 해당 명령을 app.yml의 exec 명령에 추가하여 다음 재빌드 후에도 자동으로 실행되도록 하면 됩니다.
직접 진행하는 데 도움이 필요하면 이메일을 보내거나 Marketplace 채널에 게시물을 올려주세요.
음, 꽤 간단했네요:
./launcher enter web_only
sudo apt-get install postgresql
이렇게 하면 postgres 패키지가 V. 18로 업그레이드됩니다.
그다음 관리자 UI에서 백업을 시작했는데, 성공적으로 완료된 것 같습니다.
[2026-05-21 16:26:50] 'admin' has started the backup!
[2026-05-21 16:26:50] Marking backup as running...
[2026-05-21 16:26:50] Making sure '/var/www/discourse/tmp/backups/default/2026-05-21-162650' exists...
[2026-05-21 16:26:50] Making sure '/var/www/discourse/public/backups/default' exists...
[2026-05-21 16:26:50] Updating metadata...
[2026-05-21 16:26:50] Dumping the public schema of the database...
[2026-05-21 16:26:50] pg_dump: executing SELECT pg_catalog.set_config('search_path', '', false);
[2026-05-21 16:26:50] pg_dump: last built-in OID is 16383
[2026-05-21 16:26:50] pg_dump: reading extensions
[2026-05-21 16:26:50] pg_dump: identifying extension members
[2026-05-21 16:26:50] pg_dump: reading schemas
[2026-05-21 16:26:50] pg_dump: reading user-defined tables
[2026-05-21 16:26:50] pg_dump: reading user-defined functions
[2026-05-21 16:26:50] pg_dump: reading user-defined types
[2026-05-21 16:26:50] pg_dump: reading procedural languages
[2026-05-21 16:26:50] pg_dump: reading user-defined aggregate functions
[2026-05-21 16:26:50] pg_dump: reading user-defined operators
[2026-05-21 16:26:50] pg_dump: reading user-defined access methods
[2026-05-21 16:26:50] pg_dump: reading user-defined operator classes
[2026-05-21 16:26:50] pg_dump: reading user-defined operator families
[... .... ...]
[2026-05-21 16:26:57] Finalizing backup...
[2026-05-21 16:26:57] Creating archive: netzwissen-forum-2026-05-21-162650-v20260520064255.tar.gz
[2026-05-21 16:26:57] Making sure archive does not already exist...
[2026-05-21 16:26:57] Creating empty archive...
[2026-05-21 16:26:57] Archiving data dump...
[2026-05-21 16:26:57] Archiving uploads...
[2026-05-21 16:26:58] Removing tmp '/var/www/discourse/tmp/backups/default/2026-05-21-162650' directory...
[2026-05-21 16:26:58] Gzipping archive, this may take a while...
pfaffman
(Jay Pfaffman)
5월 21, 2026, 4:47오후
11
좋아요! 나중에 19버전으로 전환되는 일이 없도록 pg18 클라이언트 관련 항목만 특정하여 설치해 볼 것 같습니다. 또한, 매 업그레이드 때마다 수동으로 이 작업을 수행하고 싶지 않다면 app.yml 파일에 이 명령어들을 추가해야 합니다.