Database/Postgres
pg_rman을 이용한 증분백업
bboks.net
2022. 7. 15. 15:46
Rocky Linux 8 기준
1. postgresql repo 설치
dnf install https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm
2. 기본 postgresql 비활성화
dnf -qy module disable postgresql
3. postgresql 설치
dnf install postgresql13 postgresql13-server
4. pg_rman 설치
해당 링크로 들어가 설치한 postgresql 버전과 맞는 버전의 pg_rman 설치
rpm -ivh https://github.com/ossc-db/pg_rman/releases/download/V1.3.14/pg_rman-1.3.14-1.pg13.rhel8.x86_64.rpm
5. pg_rman 명령어 전역에서 사용가능하도록 설정
/usr/bin 으로 이동 후 심볼릭 링크 추가
ln -s /usr/pgsql-13/bin/pg_rman pg_rman
6. 백업 디렉토리 생성
mkdir pg_rman_backup
chown postgres:postgres pg_rman_backup
7. postgresql.conf 수정
archive_mode = on
archive_command = 'cp %p /var/lib/pgsql/13/archive/%f'
8. archive 디렉토리 생성 및 권한 변경
mkdir archive
chown postgres:postgres archive
9. BACKUP_PATH 설정
여기서부터 postgres 계정으로 진행
export BACKUP_PATH=/pg_rman_backup
10. 백업 디렉토리 초기화
pg_rman init -B /pg_rman_backup -D /var/lib/pgsql/13/data
11. full backup 실행
pg_rman backup --backup-mode=full -B /pg_rman_backup -D /var/lib/pgsql/13/data --progress
12. pg_rman validate
validate를 하지 않으면 복구에 사용하지 못함
pg_rman validate
validate 전
validate 후
13. 증분(incremental) 백업 실행 및 validate
pg_rman backup -b incremental --progress
pg_rman validate
14. 복구
pg_rman restore -B /pg_rman_backup -D /var/lib/pgsql/13/data --recovery-target-time='복구하고자 하는 시점'
pg_rman restore -B /pg_rman_backup -D /var/lib/pgsql/13/data --recovery-target-time='2022-07-15 15:36:19'