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
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