PostgreSQL Backup, pg_rman 사용 방법
OS환경 : Rocky Linux 8.10 (64bit)
DB 환경 : PostgreSQL 17.4
먼저, 아래 경로에서 pg_rman을 Download 받습니다.
pg_rman Download
https://github.com/ossc-db/pg_rman/releases
Releases · ossc-db/pg_rman
Backup and restore management tool for PostgreSQL. Contribute to ossc-db/pg_rman development by creating an account on GitHub.
github.com

저는 Source code(tar.gz) 파일을 받아 설치 진행하였습니다.
pg_rman Install
$ cd pg_rman-1.3.18
$ make
$ make install
그 다음 BACKUP_PATH를 bash_profile에 지정합니다.
$ vi .bash_profile
export BACKUP_PATH={백업 경로 지정}
그 다음 pg_rman.ini 파일을 생성하기 위해 아래 명령어를 수행 합니다.
-- pg_rman.ini 파일 생성
$ pg_rman init
-- pg_rman.ini 기본설정
$ cat $BACKUP_PATH/pg_rman.ini
ARCLOG_PATH = {기존아카이브 경로}
SRVLOG_PATH = {DB Log 경로}
BACKUP_MODE = F
COMPRESS_DATA = YES
KEEP_ARCLOG_FILES = 10
KEEP_DATA_GENERATIONS = 3
KEEP_SRVLOG_FILES = 10
ini 설정 값은 아래 참고

pg_rman Backup
-- Full Backup 수행
$ pg_rman backup --backup-mode=full --with-serverlog --progress
-- Backup 상태 확인
$ pg_rman show detail
pg_rman show detail
======================================================================================================================
StartTime EndTime Mode Data ArcLog SrvLog Total Compressed CurTLI ParentTLI Status
======================================================================================================================
2025-12-31 01:08:23 2025-12-31 01:09:51 FULL 5572MB 83MB 128kB 626MB true 4 0 DONE

백업이 완료 되면 Status 값이 DONE으로 확인 됩니다.
여기서 validate명령어를 수행해서 백업 상태에 대한 유효성 검사를 해야됩니다.
$ pg_rman validate
INFO: validate: "2025-12-31 02:06:46" backup, archive log files and server log files by CRC
INFO: backup "2025-12-31 02:06:46" is valid

pg_rman Restore
-- DB 종료
$ pg_ctl stop -m immediate
$ pg_rman restore
$ pg_ctl start
Restore는 DB가 내려간 상황에서 가능합니다.
PITR은 아래 옵션을 통해 사용 가능합니다.
--recovery-target-timeline TIMELINE
특정 타임라인으로 복구하도록 지정합니다. 지정하지 않으면 ( $PGDATA/global/pg_control)의 현재 타임라인이 사용됩니다.
--recovery-target-time TIMESTAMP
이 매개변수는 복구를 진행할 타임스탬프를 지정합니다. 지정하지 않으면 최신 시간까지 복구를 진행합니다.
--recovery-target-xid XID
이 매개변수는 복구를 진행할 트랜잭션 ID를 지정합니다. 지정하지 않으면 최신 트랜잭션 ID까지 복구를 진행합니다.
--recovery-target-inclusive
지정된 복구 대상 바로 직후(true)에 중지할지, 아니면 복구 대상 바로 직전(false)에 중지할지 지정합니다. 기본값은 true입니다.
--recovery-target-action {{ pause | promote | shutdown }}
복구 목표에 도달했을 때 서버가 수행할 작업을 지정합니다. 기본값은 일시 중지(pause)이며, 이는 복구 프로세스가 일시 중지됨을 의미합니다.
승격(promote)은 복구 프로세스가 완료되고 서버가 연결을 수락하기 시작함을 의미합니다. 마지막으로 종료(shutdown)는 복구 목표에 도달한 후 서버를 중지합니다. 이 옵션은 1.3.12 버전 이상에서 제공됩니다.

🙌 댓글, 공감, 공유는 큰 힘이 됩니다! 😄
참조 :
https://github.com/ossc-db/pg_rman
https://ossc-db.github.io/pg_rman/index.html
https://coiy.github.io/postgresql/pg_rman_introduction/#
https://m.blog.naver.com/geartec82/222057147238
'RDBMS > PostgreSQL, EDB' 카테고리의 다른 글
| [PostgreSQL] pg_repack(pg_reorg) 조각난 공간 회수 하는 방법 (0) | 2025.12.23 |
|---|---|
| [PostgreSQL] Idle in Transaction 완벽 가이드 (0) | 2025.11.27 |
| [PostgreSQL] pg_auto_failover 구성된 상태에서 drop database 시에 hang 발생 현상 (0) | 2025.11.10 |
| [PostgreSQL] pg_auto_failover 설치/구성 및 장애복구 (0) | 2025.11.07 |
| [PostgreSQL] 왜? Locale 로케일이 중요할까? 로케일의 중요성 (0) | 2025.10.31 |












