홈으로 돌아가기

Go로 구현된 오픈 소스 PostgreSQL 백업

오픈 소스 도구 Postgresus가 pg_dump, 알림, 모니터링으로 PostgreSQL 백업을 자동화합니다. 프로덕션 데이터 손실 사고 후 개발. S3, WAL PITR 지원, 부하 시 경고, 시니어 개발자를 위해.

Postgresus: 클라우드 없는 PostgreSQL 백업 및 모니터링
Advertisement 728x90

# 오픈 소스 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)으로 사용됩니다.

Google AdInline article slot

실제 인시던트: 프로덕션 데이터 손실

2023년에 펫 프로젝트(월 ~$1500 수익)가 사람 실수로 피해를 입었습니다. 프로덕션에서 psql을 통해 다음 쿼리가 실행됐습니다:

UPDATE users SET email = '[email protected]' WHERE email ILIKE '%%';

약 10k 레코드가 삭제됐습니다. 마지막 백업은 한 달 전(PgBackRest 같은 콘솔 유틸리티)이었고, ID 기반 스크립트로 65% 복구. 나머지는 환불. 손실: 수익 ~30% + 다운타임.

이 인시던트는 취약점을 드러냈습니다: 신선한 백업 부재, SAVEPOINT/SELECT 무시, 드문 복구 테스트.

Google AdInline article slot

아키텍처와 개발

첫 버전은 Java로 한 달 만에 완성, 이후 성능 향상을 위해 Go로 마이그레이션. pg_dump를 감싼 UI에 다음 기능:

  • 백업 압축 (커스텀 압축).
  • 선택적 성공 알림.
  • 헬스 체크용 API 엔드포인트.

현재 활용:

  • 소규모 VPS 프로젝트의 기본 백업.
  • 클라우드 DBaaS 백업 (장애/삭제 시 중복).

프로젝트는 MIT 라이선스, self-hosted, 웹 인터페이스 제공.

Google AdInline article slot

개발 로드맵: 모니터링과 알림

로드맵은 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

Advertisement 728x90

다음 읽기