PostgreSQL - pg_rman

JM·2021년 8월 5일
0

PostgreSQL

목록 보기
2/2

1. pg_rman이란?

- PostgreSQL 데이터베이스를 백업 및 복원하는 유틸리티 프로그램

https://ossc-db.github.io/pg_rman


2. 기능

  • 테이블스페이스를 포함한 전체 데이터베이스를 백업
  • 하나의 명령으로 백업에서 복구할 수 있음
  • 증분 백업 및 압축 지원
  • 백업 버전을 관리하고 백업 카탈로그를 표시
  • 스토리지 스냅샷을 지원

3. 다운로드

4. 설치

$ tar -xf pg_rman-x.y.z-pgxx.tar.gz
$ cd ppg_rman-x.y.z-pgxx
$ make
$ make install

-- BACKUP_PATH 설정 --
$ vi ~/.bash_profile
  export BACKUP_PATH=<BACKUP_PATH>
$ source ~/.bash_profile

-- 백업 카탈로그 초기화 --
$ pg_rman init

5. 백업

5.1 백업 종류

  • Full backup
    • 전체 데이터베이스 클러스터를 백업
  • Incremental backup
    • 동일한 타임라인으로 마지막 확인된 백업 이후에 수정된 파일 또는 페이지만 백업
  • Archive WAL backup
    • 아카이브 WAL 파일만 백업

5.2 백업 방법

-- Full backup --
$ pg_rman backup -b full

-- Incremental backup --
$ pg_rman backup -b incremental

-- Archive WAL backup --
$ pg_rman backup -b archive

5.3 백업 확인

$ pg_rman show
=====================================================================
 StartTime           EndTime              Mode    Size   TLI  Status 
=====================================================================
2021-08-05 13:27:40  2021-08-05 13:27:42  FULL   151MB     1  DONE

5.4 백업 데이터 검증

  • 백업한 데이터의 유효성을 확인
  • 유효성 검사를 위해 파일 크기 검사와 CRC를 사용
  • 확인되지 않은 백업은 복원이나 증분 백업에서 사용할 수 없음
$ pg_rman validate

-- validate 실행 후 Status 변경 (Done -> OK) --
$ pg_rman show
=====================================================================
 StartTime           EndTime              Mode    Size   TLI  Status 
=====================================================================
2021-08-05 13:27:40  2021-08-05 13:27:42  FULL   151MB     1  OK

6. 복구

  • 백업된 데이터를 대상 데이터베이스 클러스터 경로로 복원
$ pg_ctl stop
$ pg_rman restore --hard-copy

※ --hard-copy : 아카이브 로그 복사 (심볼릭 링크 X)

7.백업 삭제

  • delete 명령으로 다른 증분 백업에 필요하지 않은 지정된 날짜 이전의 모든 백업 파일을 삭제
  • 증분 백업은 이전에 검증된 전체 백업에 의존
  • purge 명령으로 실행하여 삭제된 백업의 카탈로그 정보 삭제
$ pg_rman show
=====================================================================
 StartTime           EndTime              Mode    Size   TLI  Status 
=====================================================================
2021-08-05 13:37:27  2021-08-05 13:37:29  INCR    33MB     2  OK
2021-08-05 13:36:39  2021-08-05 13:36:41  FULL   234MB     2  OK
2021-08-05 13:27:40  2021-08-05 13:27:42  FULL   151MB     1  OK


$ pg_rman delete 2021-08-05 13:37:27

$ pg_rman show -a
=====================================================================
 StartTime           EndTime              Mode    Size   TLI  Status 
=====================================================================
2021-08-05 13:37:27  2021-08-05 13:37:29  INCR    33MB     2  OK
2021-08-05 13:36:39  2021-08-05 13:36:41  FULL   234MB     2  OK
2021-08-05 13:27:40  2021-08-05 13:27:42  FULL   151MB     1  DELETED

$ pg_rman purge
INFO: DELETED backup "2021-08-05 13:27:40" is purged

$ pg_rman show -a
=====================================================================
 StartTime           EndTime              Mode    Size   TLI  Status 
=====================================================================
2021-08-05 13:37:27  2021-08-05 13:37:29  INCR    33MB     2  OK
2021-08-05 13:36:39  2021-08-05 13:36:41  FULL   234MB     2  OK
profile
오픈소스 DB엔지니어

0개의 댓글