Postgresql, EPAS/백업 & 복구

pg_basebackup (incremental backup)

havy 2025. 6. 17. 09:38

Postgresql 17부터 pg_basebackup을 이용한 증분 백업 기능이 추가되었다. 

해당 기능 사용을 위해선 postgresql.conf에 summarize_wal=on 설정이 필요하다.

 

 

 

## 백업 폴더 생성
$mkdir -p /data1/as17/pg_basebackup /data1/as17/pg_basebackup/inc1 /data1/as17/pg_basebackup/inc2 /data1/as17/pg_basebackup/inc3

## 현재 backup_tab 테이블 데이터 확인
testdb=> select * from backup_tab ;'
 a |             b
---+---------------------------
 1 | 02-MAY-25 14:00:40.149758
 2 | 02-MAY-25 14:00:40.173127
 3 | 02-MAY-25 14:00:40.173906
 4 | 02-MAY-25 14:00:40.174561
 5 | 02-MAY-25 14:00:40.175225
(5개 행)

## Full 백업 수행

$ pg_basebackup -D /data1/as17/pg_basebackup/full -X fetch -P -p 5444

## Full 백업 확인
$ ll /data1/as17/pg_basebackup/full

## 데이터 삽입 및 조회
insert into backup_tab values (6, now());

testdb=> select * from backup_tab ;
 a |             b
---+---------------------------
 1 | 02-MAY-25 10:04:35.724826
 2 | 02-MAY-25 10:04:35.726175
 3 | 02-MAY-25 10:04:35.727003
 4 | 02-MAY-25 10:05:37.589441
 5 | 02-MAY-25 10:05:39.974549
 6 | 02-MAY-25 10:18:12.74439

 


## Incremental 백업 수행
pg_basebackup -D /data1/as17/pg_basebackup/inc1 --incremental=/data1/as17/pg_basebackup/full/backup_manifest -P -p 5444

## 데이터 삽입 및 조회
insert into backup_tab values (7, now());

testdb=> select * from backup_tab ;
 a |             b
---+---------------------------
 1 | 02-MAY-25 10:04:35.724826
 2 | 02-MAY-25 10:04:35.726175
 3 | 02-MAY-25 10:04:35.727003
 4 | 02-MAY-25 10:05:37.589441
 5 | 02-MAY-25 10:05:39.974549
 6 | 02-MAY-25 10:18:12.74439
 7 | 02-MAY-25 13:58:44.821869

 


## Incremental 백업 수행 2
pg_basebackup -D /data1/as17/pg_basebackup/inc2 --incremental=/data1/as17/pg_basebackup/full/backup_manifest -P -p 5444

## 데이터 삽입 및 조회
insert into backup_tab values (8, now());

testdb=> select * from backup_tab ;
 a |             b
---+---------------------------
 1 | 02-MAY-25 14:00:40.149758
 2 | 02-MAY-25 14:00:40.173127
 3 | 02-MAY-25 14:00:40.173906
 4 | 02-MAY-25 14:00:40.174561
 5 | 02-MAY-25 14:00:40.175225
 6 | 02-MAY-25 14:01:15.758906
 7 | 02-MAY-25 14:01:51.621624
 8 | 02-MAY-25 14:02:51.390934

 


## Incremental 백업 수행 3
pg_basebackup -D /data1/as17/pg_basebackup/inc3 --incremental=/data1/as17/pg_basebackup/full/backup_manifest -P -p 5444

## 데이터 삽입 및 조회
insert into backup_tab values (9, now());

testdb=> select * from backup_tab ;
 a |             b
---+---------------------------
 1 | 02-MAY-25 14:00:40.149758
 2 | 02-MAY-25 14:00:40.173127
 3 | 02-MAY-25 14:00:40.173906
 4 | 02-MAY-25 14:00:40.174561
 5 | 02-MAY-25 14:00:40.175225
 6 | 02-MAY-25 14:01:15.758906
 7 | 02-MAY-25 14:01:51.621624
 8 | 02-MAY-25 14:02:51.390934
 9 | 02-MAY-25 14:03:35.093776

 

 

복구하는 법


## combinebackup 백업 수행 (Incremental 2까지만 살려보기)
pg_combinebackup --output=/data1/as17/pg_basebackup/combine /data1/as17/pg_basebackup/full/ /data1/as17/pg_basebackup/inc2

## DB 정지
pg_ctl stop -D $PGDATA

## EPAS Data 교체
$ mv /data1/as17/data /data1/as17/data_incbak
$ mv /data1/as17/pg_basebackup/combine /data1/as17/data
$ chmod 750 /data1/as17/data

## DB 기동
$ pg_ctl start -D $PGDATA

##데이터 조회

testdb=> select * from backup_tab ;
 a |             b
---+---------------------------
 1 | 02-MAY-25 14:00:40.149758
 2 | 02-MAY-25 14:00:40.173127
 3 | 02-MAY-25 14:00:40.173906
 4 | 02-MAY-25 14:00:40.174561
 5 | 02-MAY-25 14:00:40.175225
 6 | 02-MAY-25 14:01:15.758906
 7 | 02-MAY-25 14:01:51.621624

 



'Postgresql, EPAS > 백업 & 복구' 카테고리의 다른 글

pg_dumpall  (0) 2025.06.17
pg_dump  (0) 2025.06.17
pg_basebackup (full backup)  (0) 2025.06.17