신중하게: 테스트 시 데이터베이스 백업 및 복원 과정

대량의 콘텐츠를 가져오는 과정을 곧 테스트해 보려는데, 문제가 생겼을 때 제대로 되돌릴 수 있는지 확인하고 싶습니다.

외부 PostgreSQL 인스턴스를 사용 중이라 Docker의 Discourse Rails 인스턴스를 백업할 필요는 없고, 다음 단계로 데이터베이스만 백업하면 될 것 같습니다:

백업:

  1. ./launcher stop app
  2. pg_dump -U username -p 12345 -W -F p databasename | xz > ~/backup/database/$(date +"%d-%m-%Y_%H.%M.%S").databasename.pgsql.xz
  3. ./launcher start app
  4. ### 콘텐츠 가져오기 ###

문제가 발생하면 복원:

  1. ./launcher stop app
  2. xzcat ~/backup/database/DATE.databasename.pgsql.xz | psql -U username -p 12345 -W databasename
  3. ./launcher start app

이렇게 하면 정상적이고 기능적인 상태로 돌아갈 수 있는 거죠, 맞나요?

아마도 내장된 쉬운 복원 기능이 있을 것입니다. 이 기능은 테스트와 지원이 이루어지며, 클릭 몇 번이나 명령어 한 줄이면 됩니다.

당신의 방법이 작동하지 않으면, 당신은 혼자가 됩니다.

앞서 언급했듯이, 저는 Docker화된 PostgreSQL 대신 외부 PostgreSQL 데이터베이스를 사용하고 있으며, 불행히도 일반적인 백업/복원 방법이 저에게는 작동하지 않습니다(아마도 대형 DB 서버에서 약간 더 새로운 버전의 PostgreSQL을 실행하고 있기 때문일 것입니다).

아, 그래. pg11을 사용 중이라면 알아서 해결하셔야 해요. 외부 DB에서 pg10을 사용 중이라면 문제없을 거예요.

하지만 테스트해서 제대로 작동하는지 확인해 보세요.

PG11과 PG12는 곧 백업 및 복원 프로세스에서 지원될 예정입니다. 기대해 주세요.

안녕하세요. 이제 지원되나요?

맞아요! 업그레이드는 몇 달 전에 했어요.

감사합니다! 한 가지 확인하고 싶은데요, 콘텐츠가 포함된 Discourse 사이트에 백업을 복원하면 외부 PostgreSQL 데이터베이스 인스턴스(RDS)의 모든 데이터가 완전히 삭제되나요? 복원 중 실패나 연결이 끊어지는 경우 RDS 데이터가 손상될 수 있나요?

이 작업은 discourse 데이터베이스의 모든 데이터를 삭제하지만, 다른 데이터베이스에는 영향을 미치지 않습니다. 복원이 실패하면 기존 데이터는 그대로 유지됩니다.