본문으로 건너뛰기

11.6 Barman

Barman(Backup and Recovery Manager)은 2ndQuadrant(현 EDB)가 만든 PostgreSQL 백업 도구입니다. GPL 라이선스, Python 기반입니다. pgBackRest와 함께 양대 표준으로 꼽힙니다.

핵심 기능​

기능메모
풀 백업 (barman backup)rsync 또는 pg_basebackup 모드
WAL streaming/archivepg_receivewal 또는 archive_command
PITR (barman recover --target-time)시점·LSN·xid
보존 정책 (retention_policy)recovery window 기반
다중 서버 관리한 Barman 호스트가 여러 PG 서버
백업 검증barman check
외부 cloud (barman-cloud-*)S3 / Azure / GCS — 보조 도구

구성 — 보통 별도 호스트​

Barman은 별도 백업 서버를 띄워 거기에 데이터를 모으는 패턴입니다. pgBackRest는 PostgreSQL 호스트에서 실행 후 외부 repo로 push가 일반적이라 차이가 큽니다.

설치​

sudo dnf install -y barman # RHEL/Rocky (PGDG)
sudo apt-get install -y barman # Debian/Ubuntu

barman OS 사용자가 자동으로 생성됩니다. 그 사용자의 SSH 키로 PostgreSQL 호스트에 접근합니다.

설정 — /etc/barman.conf​

[barman]
barman_home = /var/lib/barman
log_file = /var/log/barman/barman.log
configuration_files_directory = /etc/barman.d/
barman_user = barman
compression = gzip
retention_policy = RECOVERY WINDOW OF 14 DAYS

서버별 /etc/barman.d/main.conf:

[main]
description = "Main production"
conninfo = host=primary.example.com user=barman dbname=postgres
ssh_command = ssh postgres@primary.example.com

backup_method = rsync
reuse_backup = link # 증분 (hard link)
parallel_jobs = 4

streaming_conninfo = host=primary.example.com user=streaming_barman
streaming_archiver = on
slot_name = barman
create_slot = auto

PostgreSQL 측​

-- 슈퍼유저 대신 필요한 함수 권한만 부여
CREATE ROLE barman LOGIN PASSWORD 'secret';
CREATE ROLE streaming_barman LOGIN PASSWORD 'secret' REPLICATION;

-- PG 15+ (그 이전은 pg_start_backup / pg_stop_backup)
GRANT EXECUTE ON FUNCTION pg_backup_start(text, boolean), pg_backup_stop(boolean) TO barman;
GRANT pg_read_all_settings TO barman;
GRANT pg_read_all_stats TO barman;

pg_hba.conf:

hostssl all barman 10.0.0.0/8 scram-sha-256
hostssl replication streaming_barman 10.0.0.0/8 scram-sha-256

archive_command는 옵션 — streaming mode면 pg_receivewal을 Barman이 자체 띄워 WAL 수집.

검증과 첫 백업​

sudo -u barman barman check main
sudo -u barman barman backup main

barman check는 conninfo, ssh, archive, replication slot, 디스크 공간 등을 한 번에 점검합니다. 자주 쓰는 운영 진단 명령입니다.

백업 목록과 복원​

sudo -u barman barman list-backup main
# main 20260523T010000 - Fri May 23 01:00:00 2026 - Size: 240.5 GiB - WAL Size: 4.2 GiB

sudo -u barman barman show-backup main 20260523T010000
# PITR 복원 — 다른 호스트에
sudo -u barman barman recover \
--target-time '2026-05-23 09:50:00' \
--remote-ssh-command 'ssh postgres@new-host' \
main 20260523T010000 /var/lib/pgsql/17/data

복원 후 recovery.signal이 자동 생성되고, postgresql.conf의 restore_command도 자동 설정됩니다.

보존 정책​

retention_policy = RECOVERY WINDOW OF 14 DAYS
# 또는
retention_policy = REDUNDANCY 5 # 풀 백업 5개 유지

RECOVERY WINDOW가 더 안전 — 14일 PITR을 항상 가능하게 백업·WAL을 자동 유지합니다.

백업 방법 비교​

방법의미
backup_method = rsyncSSH + rsync. 증분에 link 사용
backup_method = postgrespg_basebackup 사용 — 더 간단, network 비용 큼
backup_method = snapshot클라우드 디스크 스냅샷 (GCP/Azure/AWS, Barman 3.5+) — 매우 빠른 백업

rsync + reuse_backup = link 조합이 저장 공간 절약의 표준입니다. 하드 링크로 변경 안 된 파일은 공유.

barman-cloud-*​

barman은 로컬 또는 NFS 저장이 중심. S3·Azure·GCS는 보조 도구 (barman-cloud-backup, barman-cloud-wal-archive, barman-cloud-restore)로 별도 운영.

sudo -u barman barman-cloud-backup \
--cloud-provider aws-s3 \
s3://my-pg-backups \
main

archive_command:

archive_command = 'barman-cloud-wal-archive -P aws s3://my-pg-backups main %p'

pgBackRest와 달리 하나의 통합 도구가 아니라 명령 모음이라, 운영 자동화는 직접 짜야 합니다.

pgBackRest vs Barman​

측면pgBackRestBarman
외부 저장소본 도구 통합 (S3/Azure/GCS/SFTP)보조 도구 (barman-cloud-*)
증분 백업페이지 단위rsync 하드 링크
운영 위치PostgreSQL 호스트에서 push별도 Barman 서버에서 pull
검증verify 명령barman check
라이선스MITGPL
매니지드 클라우드 통합일부일부
한국 도입 사례많음있음

신규 도입에서는 백업을 PostgreSQL 호스트에서 push할지 별도 서버에서 pull할지, 외부 저장소를 본 도구로 다룰지 보조 도구로 다룰지를 기준으로 선택합니다.

Barman → pgBackRest 마이그레이션 패턴​

  1. 두 도구를 같이 운영 (overlap window)
  2. 새 pgBackRest 풀 백업 + archive 시작
  3. Barman 일정 기간 유지 (오래된 PITR 보장)
  4. pgBackRest 운영 안정 확인 후 Barman 정지

archive_command를 한 번에 둘 다 보내는 shell 래퍼:

archive_command = '/usr/local/bin/archive_dual %p'
#!/bin/bash
pgbackrest --stanza=main archive-push "$1" || exit 1
barman-archive ... # 또는 cp to barman

운영 안티패턴​

안티패턴위험
Barman 호스트 디스크 풀새 백업 실패
barman check가 WARN인데 무시사고 시 복원 실패
같은 host에 Barman + Postgres사고 시 둘 다
보존 정책이 너무 짧음PITR window 좁음
streaming archiver 단독 (archive_command 없음)streaming 실패 시 WAL 누락

권장 구성은 streaming과 archive_command를 둘 다 두는 것입니다. 한쪽이 실패해도 백업이 유지됩니다.

정리​

  • Barman = GPL·Python 기반. 별도 백업 서버가 PG에서 SSH/streaming으로 데이터 수집
  • 풀 + WAL streaming + PITR 통합 — pgBackRest와 유사
  • 외부 저장소는 barman-cloud-* 별도 도구