본문으로 건너뛰기

11.6 Barman

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

2025년 EDB가 Barman 메인테이너십 종료를 발표 — pgBarman 라이선스·운영 미래에 변화가 있습니다. 신규 도입은 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가 일반적이라 차이가 큽니다.

    flowchart LR
  PG["PostgreSQL primary"]
  BARMAN["Barman 서버"]
  STORE["로컬 디스크 또는<br/>NFS"]

  PG -- "SSH + rsync<br/>또는 pg_receivewal" --> BARMAN --> STORE

  classDef pg fill:#ede9fe,stroke:#6d28d9,color:#3b0764,stroke-width:2px
  classDef barman fill:#dbeafe,stroke:#1d4ed8,color:#1e3a8a
  classDef store fill:#d1fae5,stroke:#047857,color:#064e3b
  class PG pg
  class BARMAN barman
  class STORE store
  

설치

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' SUPERUSER;       -- 또는 더 세밀한 권한
CREATE ROLE streaming_barman LOGIN PASSWORD 'secret' REPLICATION;

GRANT EXECUTE ON FUNCTION pg_start_backup, pg_stop_backup 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 = snapshotLVM/EBS 스냅샷 (PG 16+) — 매우 빠른 백업

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
라이선스BSDGPL
메인테이너십활발 (Crunchy, 커뮤니티)2025 EDB 종료 발표
매니지드 클라우드 통합일부일부
한국 도입 사례많음있음

신규 도입: pgBackRest 권장. 기존 Barman 운영자는 안정 운영 가능하지만 장기적으로 마이그레이션 검토합니다.

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-* 별도 도구
  • 2025 EDB 메인테이너십 종료 → 신규 도입은 pgBackRest 권장
  • 기존 운영자는 안정 사용 가능하지만 장기 마이그레이션 계획