명령어/DB
[PostgreSQL] pg_basebackup 물리 백업
jykim23
2026. 7. 30. 22:15
반응형
설치·접속: PostgreSQL 설치와 접속
부제: 데이터 디렉토리 전체를 파일 단위로 통째 복제한다
pg_basebackup -D /backup/base -Ft -z -P -X stream # 압축 tar로 물리 백업
pg_basebackup -D /backup/base -Fp -R # 평문 + 복구 설정 생성
pg_basebackup --help # 옵션 확인
pg_basebackup: initiating base backup, waiting for checkpoint to complete
pg_basebackup: checkpoint completed
pg_basebackup: write-ahead log start point: 0/3000028 on timeline 1
pg_basebackup: starting background WAL receiver
pg_basebackup: created temporary replication slot "pg_basebackup_6992"
30974/30974 kB (100%), 1/1 tablespace
pg_basebackup: write-ahead log end point: 0/3000100
pg_basebackup: syncing data to disk ...
pg_basebackup: base backup completedpg_basebackup은 pg_dump와 결이 다르다. pg_dump가 테이블·행을 SQL로 뽑는 논리 백업이라면, 이건 데이터 디렉토리의 파일을 바이트 단위로 복제하는 물리 백업이다. 결과물이 곧 새 서버로 바로 띄울 수 있는 데이터 폴더라, 스탠바이(복제) 서버 구성이나 시점 복구(PITR)의 기반으로 쓴다. 리플리케이션 프로토콜로 접속하므로 서버의 wal_level이 replica 이상이어야 하고 WAL 전송자(sender) 슬롯이 필요하다. 위 실행은 임시 슬롯을 자동 생성해 약 30MB를 압축 tar로 떠 낸 결과다. -X stream은 백업 중 쌓인 WAL까지 함께 받아 그 자체로 복구 가능한 백업을 만든다.
이렇게도 쓴다
압축 tar 포맷으로 진행률을 보며 백업한다. (실무 기본형)
pg_basebackup -D /backup/base -Ft -z -P -X stream
스탠바이 서버용으로 복구 설정까지 자동 생성한다. (-R)
pg_basebackup -h primary.internal -U replica_user -D /var/lib/postgresql/16/main -R -X stream
영구 복제 슬롯을 만들며 백업한다. (-C, -S)
pg_basebackup -D /backup/base -C -S standby1 -X stream
전송 속도를 제한해 운영 서버 부하를 줄인다. (-r)
pg_basebackup -D /backup/base -Ft -z -r 50M -X stream
백업 이름표를 달고 서버측 압축으로 뜬다. (-l, 서버 압축)
pg_basebackup -D /backup/base -Ft -l "nightly-$(date +%F)" -Z server-gzip
리플리케이션 계정을 만들고 곧바로 물리 백업한다. (createuser 조합)
createuser --replication --pwprompt replica_user && pg_basebackup -U replica_user -D /backup/base -X stream반응형