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

프로그래밍

프로덕션 환경에서의 로깅과 모니터링

2023년 07월 28일

프로덕션 환경에서 로깅과 모니터링은 매우 중요한 역할을 합니다. 로그는 어플리케이션이 생성하는 이벤트를 기록하는 역할을 하며, 모니터링은 어플리케이션의 상태와 성능을 추적하는 역할을 합니다. 이 둘은 서로 보완적인 역할을 하며 어플리케이션의 안정성과 신뢰성을 보장하기 위해 필수적입니다. 로깅 로깅은 어플리케이션이 생성하는 이벤트를 기록하는 것을 말합니다. 이를 통해 문제가 발생했을 경우 해당 문제를 파악하고…

Read More
프로그래밍

웹 사이트 접근성: WCAG 2.0 준수 가이드라인

2023년 08월 02일

웹 사이트 접근성이란 모든 사람들이 인터넷을 이용할 수 있도록 하는 것입니다. 따라서 웹 사이트를 사용하는 데 있어서 어려움을 겪는 사람들도 웹 사이트를 쉽게 이용할 수 있도록 웹 사이트 접근성을 고려해야 합니다. 이는 장애, 나이, 문화, 국가 등의 다양한 이유로 인해 불가피한 일입니다. 그러나 웹 사이트 접근성을 고려한 웹 사이트를 만들기…

Read More
프로그래밍

효율적인 알고리즘 설계 및 분석

2023년 07월 23일

컴퓨터 프로그램은 입력을 받아들이고 출력을 생성합니다. 입력과 출력 사이에는 처리 과정이 존재하며, 이 처리 과정에서 가장 중요한 요소는 알고리즘입니다. 알고리즘은 원하는 출력을 생성하기 위한 일련의 명령어 집합으로, 효율적인 알고리즘은 빠른 처리 속도와 적은 자원 사용량을 보장합니다. 알고리즘 분석 알고리즘을 설계하고 구현한 후에는 해당 알고리즘이 얼마나 효율적인지를 분석해야 합니다. 알고리즘의 시간…

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