# 오픈 소스 PostgreSQL 백업 도구 개발: 인시던트부터 프로덕션 레디 솔루션까지
개발자가 중급에서 고급 전문가를 대상으로 self-hosted 웹 앱을 구축했습니다. PostgreSQL 백업 전용입니다. 이 프로젝트는 pg_dump를 기반으로 스케줄러, 스토리지 통합, 데이터베이스 가용성 모니터링 기능을 추가했습니다. 기술 스택: Go (Java에서 포팅), Gin, GORM, React + TypeScript, PostgreSQL, Docker Compose. PostgreSQL 버전 13–17을 지원합니다.
주요 기능:
- 스케줄 백업 (cron 스타일 스케줄러)으로 로컬 디스크, S3, Google Drive에 저장.
- N회 시도 후 실패 알림 (Telegram, 이메일, Slack으로, 오탐 필터링 적용).
- DB 가용성 그래프와 함께 헬스 체크.
이 프로젝트는 VPS 프로젝트의 기본 백업과 클라우드 DBaaS의 보조 백업(Plan B)으로 사용됩니다.
실제 인시던트: 프로덕션 데이터 손실
2023년에 펫 프로젝트(월 ~$1500 수익)가 사람 실수로 피해를 입었습니다. 프로덕션에서 psql을 통해 다음 쿼리가 실행됐습니다:
UPDATE users SET email = '[email protected]' WHERE email ILIKE '%%';
약 10k 레코드가 삭제됐습니다. 마지막 백업은 한 달 전(PgBackRest 같은 콘솔 유틸리티)이었고, ID 기반 스크립트로 65% 복구. 나머지는 환불. 손실: 수익 ~30% + 다운타임.
이 인시던트는 취약점을 드러냈습니다: 신선한 백업 부재, SAVEPOINT/SELECT 무시, 드문 복구 테스트.
아키텍처와 개발
첫 버전은 Java로 한 달 만에 완성, 이후 성능 향상을 위해 Go로 마이그레이션. pg_dump를 감싼 UI에 다음 기능:
- 백업 압축 (커스텀 압축).
- 선택적 성공 알림.
- 헬스 체크용 API 엔드포인트.
현재 활용:
- 소규모 VPS 프로젝트의 기본 백업.
- 클라우드 DBaaS 백업 (장애/삭제 시 중복).
프로젝트는 MIT 라이선스, self-hosted, 웹 인터페이스 제공.
개발 로드맵: 모니터링과 알림
로드맵은 PostgreSQL 전용 모니터링에 초점:
pg_stat_activity,pg_stat_sys,pg_locks분석과 UI 시각화 (postgres_exporter + Grafana 대안).- 느린 쿼리 알림 (INSERT 기준 100ms 초과).
- 병목 감지를 위한 CPU 시간 및 실행 빈도 통계.
- 스토리지 확장 (Yandex Disk, NFS, FTP)과 알림 (Discord, Mattermost).
증분 백업 + WAL 스트리밍 with PITR은 이미 구현 (2025 UPD).
프로덕션 데이터베이스 작업 규칙
인시던트 후 엄격한 규칙 도입:
- UPDATE 전: 검증을 위한 SELECT LIMIT 1–2 필수.
- 벌크 작업: 수동 SAVEPOINT.
- 분기별 복구 훈련 (클라우드 + 로컬 백업).
BEGIN;
SAVEPOINT sp1;
SELECT * FROM users WHERE email ILIKE '%old%' LIMIT 2;
-- OK? UPDATE...
RELEASE SAVEPOINT sp1;
COMMIT;
2년 넘게 Postgres와 클라우드 백업으로 문제없이 복구.
핵심 포인트
- 이 도구는 실제痛点 해결: 자동화 + 알림으로 극히 드문 0.01% 데이터 손실 방지.
- Go 구현으로 VPS 저부하 보장.
- 백업에 로드 모니터링 즉시 통합.
- 정기 복구 테스트 필수—검증 없인 백업 무용.
- 클라우드 DBaaS 백업의 오픈 소스 대안으로 장애 내성 레이어.
— Editorial Team
아직 댓글이 없습니다.