인성장

[PostgreSQL] 백업 복구 방식 본문

PostgreSQL/Admin

[PostgreSQL] 백업 복구 방식

인성장 2024. 2. 27. 09:49

PostgreSQL DB를 Backup and Recovery 하는 방식은 크게 3가지로 분류됩니다.

 

  • SQL 덤프
  • 파일시스템
  • 아카이브 모드

※ SQL 덤프 기반 백업 복구 관련 명령어, 아카이브 모드 기반 백업 복구 절차 등에 대한 상세 설명과 사용법은 추 후 별도 작성 예정

SQL 덤프 기반

 

SQL 덤프 방식은 DB서버가 기동되고 있는 상태에서만 백업 및 복구가 가능합니다. 백업 방법은 pg_dump, pg_dumpall 명령어로, 복구는 psql, pg_restore 명령어를 통해 수행합니다. pg_dumpall는 PostgreSQL 클러스터를 구성하는 모든 데이터베이스를 한번에 백업받을 수 있고, 만약 원하는 데이터베이스를 개별로 백업받고 싶거나, 데이터베이스의 필요한 부분만 백업받고 싶다면 pg_dump 명령어를 사용하면 됩니다. 그리고 이와 같이 받은 백업파일들은 텍스트파일 형식일 경우, psql로 복구를 진행하고 그외는 pg_restore 명령어로 복구를 수행합니다. Oracle의 export/import 유틸리티와 비슷합니다.

 

SQL 덤프 기반 백업 예 (1)

$ pg_dump DATABASE_NAME > pg_bak.dump

 

SQL 덤프 기반 복구 예 (1)

$ psql DATABASE_NAME < pg_bak.dump

 

 

파일시스템 기반

 

파일시스템 방식은 data 디렉토리를 압축해서 백업 복구를 진행합니다. 백업 전, 반드시 DB를 중지해야 합니다. 복구는 압축된 파일을 풀어주기만 하면 됩니다. data 디렉토리 자체를 압축하여 백업받는 방식이기 때문에 전체백업만 받을 수 있습니다. Cold Backup 방식과 비슷합니다.

 

파일시스템 기반 백업 예

$ tar -zcvf PG11.tar.gz /postgres/app/postgres/pgsql11/data

 

파일시스템 기반 복구 예

$ tar -zxvf PG11.tar.gz -C /postgres/app/postgres/pgsql11/data

 

 

아카이브 모드 기반

 

아카이브 모드 방식은 필수적으로 아카이브 모드 활성화해야하며, pg_basebackup을 이용하여 백업을 진행하여야 합니다. 아카이브 모드 방식은 복구 시 사용자가 원하는 특정 시점으로 복구가 가능하며, 이를 위해 전체 백업 이후 아카이브 WAL 파일을 반드시 보존하고 있어야 합니다.

 

아카이브 모드 기반 사전설정 (설정 후 DB 재기동 필요)

$ cd $PGDATA
$ vi postgresql.conf
...
wal_level = replica
archive_mode = on
archive_command = 'cp %p /arch/%f'
archive_timeout = 120     -- seconds
...

 

pg_basebackup을 이용한 백업 예

$ pg_basebackup -Ft -D /postgres/app/postgres/pgsql12/backup -v

 

pg_basebackup을 이용한 복구 예

- 추 후 포스팅 글 별도 작성 예정.

반응형