자동화&툴 리뷰

WAL-G - 클라우드 환경 데이터베이스를 위한 아카이빙 및 복원 도구 완벽 가이드

노동1호 2026. 5. 7. 04:02

WAL-G - 클라우드 환경 데이터베이스를 위한 아카이빙 및 복원 도구 완벽 가이드

WAL-G - 클라우드 환경 데이터베이스를 위한 아카이빙 및 복원 도구 완벽 가이드

데이터베이스 운영에서 가장 중요한 것 중 하나는 백업과 복원입니다. 백업 없이 운영하다 보면 데이터를 잃어버릴 수 있고, 복원이 느리면 서비스 중단 시간이 길어집니다. 특히 클라우드 환경에서는 데이터량이 빠르게 증가하고, 비용도 중요한 요소가 됩니다.

WAL-G는 이러한 문제들을 해결하기 위해 만들어진 오픈소스 백업 및 복원 도구입니다. PostgreSQL, MySQL/MariaDB, MS SQL Server를 지원하며, MongoDB와 Redis도 베타 버전으로 지원합니다. WAL-E의 후속 프로젝트로서, 더 나은 성능과 다양한 기능을 제공합니다.


WAL-G란 무엇인가?

WAL-G는 Web Archive Log - G의 줄임말로, WAL(Write-Ahead Logging) 아카이빙과 복원 기능을 제공하는 도구입니다. 전통적인 데이터베이스 백업 방식보다 효율적인 증분 백업(Incremental Backup)을 지원하여, 전체 백업 없이도 특정 시점으로 복원할 수 있습니다.

주요 특징

WAL-G의 가장 큰 장점은 다양한 압축 알고리즘을 지원한다는 점입니다. LZ4, LZMA, ZSTD, Brotli 중 선택할 수 있으며, ZSTD는 속도와 압축률 사이의 균형이 뛰어납니다. 또한 멀티 프로세서를 활용하여 병렬 처리가 가능하므로, 대규모 데이터베이스도 빠르게 백업할 수 있습니다.

PostgreSQL에서 특히 유용한 기능은 Non-exclusive Base Backup입니다. 기존 방식에서는 백업 시 데이터베이스를 잠그어야 했지만, WAL-G는 서비스 중단 없이 백업을 수행할 수 있습니다. 이는Production 환경에서 매우 중요한 특성입니다.


설치 및 설정

WAL-G는 다양한 운영체제에서 쉽게 설치할 수 있습니다. Go로 작성되어 있어 단일 바이너리로 배포됩니다.

Linux/macOS 설치

가장 간단한 방법은 GitHub Releases에서 미리 빌드된 바이너리를 다운로드하는 것입니다. PostgreSQL용으로 설치하는 경우:

# 바이너리 다운로드 (Linux x86_64)curl -LO https://github.com/wal-g/wal-g/releases/latest/download/wal-g-pg.linux-amd64chmod +x wal-g-pg.linux-amd64sudo mv wal-g-pg.linux-amd64 /usr/local/bin/wal-g# 또는 Homebrew로 설치 (macOS)brew install wal-g

Docker를 이용한 설치

컨테이너 환경에서는 Docker 이미지를 사용할 수 있습니다:

docker pull walg/wal-g:latest

PostgreSQL 설정

PostgreSQL에서 WAL-G를 사용하려면 postgresql.conf 파일을 수정해야 합니다:

# WAL 레벨을 archive로 설정wal_level = archive# 아카이브 명령어 설정archive_mode = onarchive_command = 'wal-g wal-push %p'# 아카이브 디렉토리 설정 (로컬 또는 S3 등)# 예: AWS S3 사용 시# archive_command = 'AWS_ACCESS_KEY_ID=xxx AWS_SECRET_ACCESS_KEY=xxx wal-g wal-push %p'

S3 외에 Google Cloud Storage, Azure Blob Storage, Swift 등 다양한 스토리지 백엔드를 지원합니다.


핵심 기능 살펴보기

증분 백업 (Incremental Backup)

WAL-G의 핵심 기능은 증분 백업입니다. 전체 백업 이후 변경된 데이터만 백업하므로, 저장 공간과 시간을 크게 절약할 수 있습니다. 이 기능은 특히 데이터량이 많은 프로덕션 환경에서 중요한우세입니다.

# 전체 백업 수행wal-g backup-push /var/lib/postgresql/data# 증분 백업 수행 (마지막 백업 이후 변경분만)wal-g backup-push /var/lib/postgresql/data --incremental# 백업 목록 확인wal-g backup-list#NAME                           LAST_modified           SIZE#base_000000010000000000000004  2026-05-07 00:30:00    123MB#base_000000010000000000000007  2026-05-07 06:30:00    45MB

증분 백업은 일반적으로 전체 백업 대비 30~70% 의 저장 공간만 사용합니다.

복원 기능

WAL-G는 유연한 복원 옵션을 제공합니다:

# 가장 최근 백업으로 복원wal-g backup-fetch /var/lib/postgresql/data LATEST# 특정 시점으로 복원 (Point-in-Time Recovery)wal-g backup-fetch /var/lib/postgresql/data "base_000000010000000000000004"# 특정 시점으로 WAL 복원 (PITR)wal-g wal-fetch "000000010000000000000007" - | psql

압축 및가밀

다양한 압축 알고리즘 중 ZSTD를 추천합니다. 기본 설정보다 40% 이상 빠른 백업 속도를 자랑하며, 압축률도 뛰어납니다:

# ZSTD 압축으로 백업WALG_COMPRESSION_METHOD=zstd wal-g backup-push /var/lib/postgresql/data# 암호화 설정 (GPG 키 사용)WALG_GPG_KEY_ID=your_key_idWALG_GPG_PUBLIC_KEY=/path/to/public.keyWALG_GPG_PRIVATE_KEY=/path/to/private.keywal-g backup-push /var/lib/postgresql/data

백업 검증

백업의 무결성을 검증하는 것도 중요합니다. WAL-G는 --verify 옵션으로 백업을 검증할 수 있습니다:

wal-g backup-fetch /var/lib/postgresql/data LATEST --verify


실전 활용 사례

AWS S3와 함께 사용하기

AWS S3는 가장 많이 사용되는 백업 스토리지입니다. 다음은 S3와 WAL-G를 함께 사용하는 설정입니다:

WAL-G - 클라우드 환경 데이터베이스를 위한 아카이빙 및 복원 도구 완벽 가이드

# 환경 변수 설정export AWS_ACCESS_KEY_ID=your_access_keyexport AWS_SECRET_ACCESS_KEY=your_secret_keyexport AWS_REGION=ap-northeast-2export WALG_S3_PREFIX=s3://your-bucket/wal-g# 백업 수행wal-g backup-push /var/lib/postgresql/data# 복원 수행wal-g backup-fetch /var/lib/postgresql/data LATEST

비용 최적화를 위해 S3 Intelligent-Tiering 또는 S3 Glacier를 백업 스토리지로 활용하면, 백업 비용을 크게 줄일 수 있습니다.

백업 자동화 스크립트

cron job으로 주기적인 백업을 설정할 수 있습니다:

#!/bin/bash# /usr/local/bin/wal-g-backup.shexport AWS_ACCESS_KEY_ID=your_keyexport AWS_SECRET_ACCESS_KEY=your_secretexport AWS_REGION=ap-northeast-2export WALG_S3_PREFIX=s3://your-bucket/wal-gexport WALG_COMPRESSION_METHOD=zstd# 증분 백업 수행wal-g backup-push /var/lib/postgresql/data --incremental# 7일 이상 된 백업 삭제wal-g delete backup-retention --retention-days 7# 백업 목록 출력wal-g backup-list

crontab에 추가합니다:

0 2   * /usr/local/bin/wal-g-backup.sh >> /var/log/wal-g-backup.log 2>&1


대안과 비교

pgBackRest와의 비교

pgBackRest는 WAL-G와 함께 가장 많이 사용되는 PostgreSQL 백업 도구입니다. 그러나 2026년 4월 기준으로 pgBackRest는 더 이상 유지 관리되지 않습니다. 이로 인해 보안 업데이트와 새 기능 추가가 중단된 상태입니다.

기능WAL-GpgBackRest
증분 백업
멀티 프로세서
다양한 압축✅ (LZ4, LZMA, ZSTD, Brotli)✅ (LZ4, ZSTD)
클라우드 스토리지✅ (S3, GCS, Azure, Swift 등)✅ (S3, Azure, GCS)
유지 관리 상태✅ 활발히 진행 중❌ 중단 (2026년 4월~)
MongoDB 지원베타
Redis 지원베타

WAL-E와의 비교

WAL-G는 WAL-E의 후속 프로젝트입니다. WAL-E보다 2~3배 빠른 백업 속도를 제공하며, LZMA와 Brotli 압축 옵션이 추가되었고, 멀티 프로세서 지원이 개선되었습니다.


결론: WAL-G를 추천하는 이유

WAL-G는 2026년 현재 가장 추천하는 PostgreSQL 백업 도구입니다. 활발한 유지 관리, 다양한 클라우드 스토리지 지원, 빠른 증분 백업 성능이 그 이유입니다.

특히 다음 상황에 WAL-G를 권장합니다:

새로운 PostgreSQL 배포를 시작하는 팀: 처음부터 올바른 백업 전략을 세울 수 있습니다

다양한 데이터베이스를 운영하는 팀: PostgreSQL, MySQL, MongoDB, Redis를 하나의 도구로 백업할 수 있습니다

비용 최적화가 중요한 팀: 증분 백업과 효율적인 압축으로 스토리지 비용을 줄일 수 있습니다

pgBackRest 사용자: 더 이상 업데이트가 없는 pgBackRest에서 마이그레이션하는 것이 좋습니다

백업은 데이터베이스 운영에서 가장 중요한 보험입니다.만일의 상황에서도 데이터를 안전하게수레루요우, WAL-G 도입을 고려해 보시길 권합니다.


📚 출처

WAL-G GitHub Repository

WAL-G Official Documentation

WAL-G 3.0.8 Released - PostgreSQL Official

Top Open-Source Postgres Backup Solutions in 2026 - ByteBase

Cut Postgres Backup Costs 40% with WAL-G 3.0 & S3 2026

tags: WAL-G, PostgreSQL, 데이터베이스, 백업, 복원, 증분백업, 클라우드, AWS, S3,DevOps, DB관리, ZSTD, MariaDB, MongoDB, Redis


📚 출처

https://news.hada.io/topic?id=29208