원격 PostgreSQL에서 pg_dump 백업 실패 - 포트 및 버전 차이; 어떤 옵션이 있나요?

시스템 백업을 실행하려고 하면 다음 오류가 발생합니다: “백업에 실패했습니다. 로그를 확인해 주세요.”
로그에는 다음과 같이 보고됩니다: pg_dump: [archiver (db)] connection to database "discoursedb" failed: could not connect to server: Connection refused

두 가지 문제가 동시에 발생하고 있다고 생각합니다:

  1. 원격 서버가 비표준 포트에서 실행되고 있습니다.
  2. 원격 PostgreSQL이 더 새로운 PSQL 버전을 실행하고 있습니다.

앱에 진입(/var/discourse/launcher enter app)하여 수동 백업을 실행했을 때, 포트 정의가 없는 초기 상태에서 정확히 동일한 오류가 발생했음을 확인했습니다:

$ pg_dump -h 123.456.789.101 -U username -W -F t discourse_db > discourse_db_backup.tar
Password:
pg_dump: [archiver (db)] connection to database "discourse_db" failed: could not connect to server: Connection refused
	Is the server running on host "123.456.789.101" and accepting
	TCP/IP connections on port 5432?

따라서 이 문제는 쉽게 해결되었습니다(다만 Discourse가 백업 시 올바른 포트를 사용하도록 강제하는 방법을 모르겠음), 그러나 다음 문제는 다소 우려스러웠습니다. 데이터베이스 서버에서 더 새로운 버전의 PSQL을 사용 중이기 때문입니다:

$ pg_dump -h 123.456.789.101 -p 45678 -U username -W -F t discourse_db > discourse_db_backup.tar
Password:
pg_dump: server version: 11.5 (Ubuntu 11.5-3.pgdg18.04+1); pg_dump version: 10.10 (Debian 10.10-1.pgdg100+1)
pg_dump: aborting because of server version mismatch

이러한 상황에서 무엇을 할 수 있을까요? 이 경우 실제 시스템 백업을 정상적으로 작동시킬 방법이 있나요, 아니면 Discourse와 PostgreSQL 데이터베이스를 별도로 백업해야 하나요?

후자가 유일한 옵션이라면, 적어도 데이터를 백업하는 올바른 방법은 무엇인가요? 그리고 새로운 스크립트를 작성하지 않고도 이 두 가지를 동시에 수행할 수 있는 선호되는 통합 메커니즘이 제공됩니까?

다른 게시글에서 비슷한 상황을 가진 누군가에 대한 논의를 찾았습니다. 제 경우의 큰 차이는 파일을 S3가 아니라 로컬 서버에 저장한다는 점입니다. PostgreSQL은 별도로 백업되므로 이를 백업하지 않아도 되지만, 여전히 백업이 필요한 항목은 다음과 같습니다.

  • 로컬 콘텐츠 및
  • Discourse 설정

DB + 콘텐츠 + 설정을 모두 한 곳에 통합된 백업으로 갖고 싶지만, 그런 것을 지원하지 않거나 지원할 의사가 없으리라 짐작합니다. 따라서 최소한 콘텐츠 + 설정만이라도 통합된 패키지로 백업할 수 있도록 하고 싶습니다.

Postgres 11은 지원되지 않습니다. 버전 간 복원 방법을 다른 곳에서 찾아보실 수 있지만, Discourse를 pg11과 함께 작동시키려면 상당한 작업이 필요합니다.

흥미롭고 이상하네요. 어딘가에서 11버전은 괜찮다는 글을 본 적이 있지만, 그 외에는 이미 11버전에 배포된 시스템이 있고 지금까지 (백업을 제외하고는) 오류나 문제를 발견하지 못했거든요… 이제 걱정이 되네요…

아, 이제 시작이네요. 이 게시글에 따르면 PostgreSQL 11은 "그냥 작동해야 한다"고 합니다.

네. pg11에 두 개의 시스템을 배포해 두었습니다. 백업을 직접 수행하고 있을 뿐, 그 외에는 문제없이 잘 작동하고 있습니다. 컨테이너에서 pg를 11로 업그레이드했습니다. 백업은 생성되지만 복원은 되지 않습니다.

Discourse의 백업 시스템은 PostgreSQL 버전 불일치가 발생하면 단순히 경고만 하고 실패하지 않아야 합니다. 저도 직접 백업을 시도해 보았는데, 외부 PG 서버를 사용 중이어서 아예 tarball이 생성되지 않았습니다.

나도 같은 문제가 발생했습니다. PostgreSQL 데이터베이스를 별도의 서버로 이동한 후 백업 오류가 발생하기 시작했습니다. 메인 서버의 Docker에서 PostgreSQL을 삭제하고 다시 설치하는 방법으로 해결책을 찾았습니다.

cd /var/discourse
./launcher enter app
apt-get remove postgresql-client-common
apt-get update
sudo apt-get install postgresql

상세 정보: https://sorucevap.com/t/discourse-yedekleme-pg-dump-hatasi-ve-cozumu-pg-dump-error-server-version-12-13-14-pg-dump-version-12-13-14/113