Skip to content
toylee blog
toylee blog

컴퓨터·IT 문제 해결과 최신 기술 정보

  • 홈
  • 컴퓨터 활용
  • 프로그래밍
    • 파이썬
    • 자바(Java)
    • Flutter
    • HTML
    • Linux
    • 워드프레스
  • 맥북
  • IT 일반
  • 블로그 소개
  • 문의하기
toylee blog

컴퓨터·IT 문제 해결과 최신 기술 정보

PostgreSQL 백업 자동화: pg_dump와 복구 검증

toylee, 2026년 02월 17일2026년 08월 27일

PostgreSQL 백업 자동화는 pg_dump 실행만 예약하는 것으로 끝나지 않습니다. 비밀번호 노출 방지, 실패한 파일의 구분, 보존 정책, 복구 검증과 모니터링이 함께 있어야 실제 사고에서 사용할 수 있습니다.

[목차]

  • 백업 형식 선택
  • 비밀번호 파일을 안전하게 준비합니다
  • Custom 형식 자동화 예제
  • 복구 시험
  • 놓치기 쉬운 항목
  • 공식 참고자료
  • 관련 글

백업 형식 선택

  • Custom(-Fc): 압축, 선택 복구와 pg_restore 사용이 가능해 일반적인 단일 DB 백업에 적합합니다.
  • Directory(-Fd): 병렬 덤프와 병렬 복구가 필요한 큰 DB에 적합합니다.
  • Plain SQL: 사람이 읽기 쉽지만 선택 복구와 병렬 처리에는 제약이 있습니다.

비밀번호 파일을 안전하게 준비합니다

Linux에서는 실행 계정의 ~/.pgpass 또는 PGPASSFILE로 지정한 파일에 다음 형식을 사용합니다.

db.example.com:5432:appdb:backup_user:replace-with-secret
chmod 600 ~/.pgpass

비밀번호를 명령행 인수나 스크립트 본문에 직접 넣지 않습니다. 백업 계정에는 필요한 최소 권한만 부여하세요.

Custom 형식 자동화 예제

#!/usr/bin/env bash
set -Eeuo pipefail
umask 077

backup_dir="/srv/backups/postgresql"
stamp="$(date -u +%Y%m%dT%H%M%SZ)"
tmp="$backup_dir/.appdb-$stamp.dump.tmp"
dest="$backup_dir/appdb-$stamp.dump"

mkdir -p "$backup_dir"
trap 'rm -f "$tmp"' EXIT

pg_dump \
  --host=db.example.com \
  --username=backup_user \
  --dbname=appdb \
  --format=custom \
  --file="$tmp"

pg_restore --list "$tmp" > /dev/null
mv "$tmp" "$dest"
trap - EXIT

find "$backup_dir" -type f -name 'appdb-*.dump' -mtime +30 -delete
printf 'backup complete: %s\n' "$dest"

pg_restore --list는 아카이브 구조를 읽을 수 있는지 확인하지만 전체 복구 성공을 보장하지는 않습니다. 운영과 분리된 DB에 정기적으로 복원해 애플리케이션의 핵심 쿼리까지 시험해야 합니다.

복구 시험

createdb --template=template0 appdb_restore_test
pg_restore \
  --exit-on-error \
  --clean --if-exists \
  --dbname=appdb_restore_test \
  /srv/backups/postgresql/appdb-20260827.dump

소유자와 권한을 다른 환경에서 복원한다면 --no-owner, --role 같은 옵션을 환경에 맞게 검토합니다. 운영 DB를 대상으로 복구 명령을 처음 시험하면 안 됩니다.

놓치기 쉬운 항목

  • pg_dump 클라이언트가 서버의 더 새로운 메이저 버전을 지원하는지 확인합니다.
  • 역할과 테이블스페이스 등 클러스터 전역 객체는 pg_dumpall --globals-only로 별도 보관합니다.
  • 백업 용량, 종료 코드와 마지막 성공 시간을 모니터링합니다.
  • DB 서버와 다른 장애 영역에 암호화된 사본을 둡니다.

공식 참고자료

  • PostgreSQL: SQL Dump 백업
  • PostgreSQL: pg_dump
  • PostgreSQL: Password File

관련 글

  • SQLite 데이터 백업과 복구: 안전한 명령과 검증 절차
  • 리눅스에서 자동화 스크립트 작성하는 법

내용 검토 및 업데이트: 2026년 8월 27일

프로그래밍 IT 튜토리얼postgresqlpostgresql 스크립트postgresql 자동화pythonsql 스크립트sql 자동화데이터베이스 자동화

글 탐색

Previous post
Next post

Related Posts

프로그래밍

테스트 주도 개발과 지속적인 제공(CD)의 연계

2023년 07월 28일

테스트 주도 개발(Test-driven development, TDD)은 소프트웨어 개발 방법론 중 하나입니다. 이 방법은 코드 작성 전에 테스트 케이스를 먼저 작성하고, 이를 통과하는 코드를 작성하는 것입니다. 이렇게 함으로써, 버그를 사전에 발견하여 수정할 수 있도록 도와줍니다. 또한, 이는 코드 품질을 높이는 데도 큰 도움이 됩니다. 지속적인 제공(Continuous delivery, CD)은 소프트웨어 개발 방법론 중…

Read More

반복 작업 자동화 아이디어: 매일 하는 수동 업무를 코드로 줄이는 실무 요령

2026년 10월 05일

매일 반복되는 파일 정리, 데이터 취합, 보고서 작성 등의 수동 업무를 자동화하여 개발 생산성을 높이는 구체적인 접근 방법과 실무 요령을 알아봅니다.

Read More
프로그래밍

정규표현식의 사용과 활용

2023년 07월 14일

정규표현식은 문자열에서 패턴을 검색하고 추출하는 강력한 도구입니다. 이 도구는 다양한 분야에서 활용됩니다. 텍스트 처리, 데이터 분석 및 웹 개발 등에서 유용하게 사용됩니다. 이번 포스트에서는 정규표현식의 기본적인 사용법과 활용 방법을 자세히 살펴보겠습니다. 정규표현식의 기본적인 사용법 정규표현식은 문자열에서 특정한 문자나 문자열을 찾거나 대체하는데 사용됩니다. 이 도구는 일종의 패턴인데, 패턴을 이용하여 문자열에서 원하는…

Read More

최신 글

  • 시맨틱 태그를 써야 하는 이유: 웹페이지 품질을 높이는 기본 원리 정리
  • 워드프레스 스팸 댓글 관리 기본 설정 및 차단 대처 요령
  • 파이썬 CSV 자동 정리 스크립트 작성법: 데이터 전처리 요령
  • 브라우저 캐시 삭제가 필요한 경우와 상황별 대처 요령 정리
  • 맥북 발열 줄이는 기본 설정: 성능 저하를 막는 실무 관리 요령

최신 댓글

보여줄 댓글이 없습니다.

보관함

  • 2026년 10월
  • 2026년 9월
  • 2026년 8월
  • 2026년 2월
  • 2025년 7월
  • 2025년 6월
  • 2025년 5월
  • 2025년 4월
  • 2025년 3월
  • 2025년 2월
  • 2025년 1월
  • 2024년 12월
  • 2024년 11월
  • 2024년 8월
  • 2024년 6월
  • 2024년 5월
  • 2024년 3월
  • 2024년 2월
  • 2023년 11월
  • 2023년 9월
  • 2023년 8월
  • 2023년 7월
  • 2023년 6월
  • 2023년 5월
  • 2023년 4월
  • 2023년 3월
  • 2023년 2월

카테고리

  • Flutter
  • HTML
  • IT 일반
  • Linux
  • 맥북
  • 워드프레스
  • 자바(Java)
  • 컴퓨터 활용
  • 파이썬
  • 프로그래밍

사이트 안내

  • 블로그 소개
  • 문의하기
  • 개인정보 처리방침
©2026 toylee blog | WordPress Theme by SuperbThemes