pg_dump

PostgreSQL 데이터베이스를 logical backup으로 내보내는 명령이다. plain SQL, custom archive, directory, tar format을 지원하며 schema-only 또는 data-only dump에도 자주 쓴다.

  • 단일 database 또는 schema/table 단위 logical backup 생성에 사용한다.
  • 복원 경로를 생각하면 -F c custom format이나 -F d directory format이 유연하다.
  • plain SQL dump는 사람이 읽기 쉽고 diff가 가능하지만, 복원은 일반적으로 psql로 수행한다.
pg_dump [OPTION]... [DBNAME]
pg_dump -d appdb -f appdb.sql
pg_dump -Fc -d appdb -f appdb.dump
pg_dump -Fd -j 4 -d appdb -f appdb.dir
  • pg_dump [<switches>…] [DBNAME]
  • pg_dump -f FILE 출력 파일 또는 디렉터리 지정
  • pg_dump -F p|c|d|t 출력 형식 지정
  • pg_dump -s schema-only dump
  • pg_dump -a data-only dump
  • pg_dump -n SCHEMA, -t TABLE 범위 제한
  • -f, –file 출력 파일 또는 directory 이름
  • -F, –format p plain, c custom, d directory, t tar
  • -j, –jobs 병렬 dump worker 수. directory format에서 자주 사용
  • -Z, –compress 압축 레벨 지정
  • -a, –data-only 데이터만 dump
  • -s, –schema-only schema만 dump
  • -c, –clean 복원 전에 object drop SQL 포함
  • -C, –create database 생성 SQL 포함
  • -n, –schema 특정 schema만 dump
  • -N, –exclude-schema 특정 schema 제외
  • -t, –table 특정 table만 dump
  • -T, –exclude-table 특정 table 제외
  • -O, –no-owner ownership 복원 정보 생략
  • -x, –no-privileges GRANT/REVOKE 정보 생략
  • -h, –host, -p, -U 접속 정보 지정 (미지정시 소켓연결)
# 사람이 읽을 수 있는 plain SQL dump
pg_dump -d appdb -f ./appdb.sql
 
# pg_restore로 다루기 좋은 custom archive
pg_dump -Fc -d appdb -f ./appdb.dump
 
# 병렬 dump용 directory format
pg_dump -Fd -j 4 -d appdb -f ./appdb.dir
 
# schema만 백업
pg_dump -s -d appdb -f ./appdb-schema.sql
 
# data만 백업
pg_dump -a -d appdb -f ./appdb-data.sql
 
# 특정 schema만 백업
pg_dump -n public -d appdb -f ./public.sql
 
# 특정 table만 백업
pg_dump -t public.users -d appdb -f ./users.sql
  • long-running transaction과 lock 대기가 심하면 –lock-wait-timeout을 검토한다.
  • restore 대상을 유연하게 제어하려면 plain SQL보다 -Fc 또는 -Fd가 보통 낫다.
  • ownership이나 privilege 차이 때문에 복원 실패가 예상되면 backup 단계에서 -O -x 조합을 검토한다.
  • very large database는 logical dump보다 physical backup 전략이 더 적절할 수 있다.
  • logical backup은 major version 간 이식성에 유리하지만, extension과 collation, role 구조 차이는 별도 확인이 필요하다.
  • plain format은 psql로 복원하고, custom/directory/tar archive는 pg_restore로 복원하는 흐름이 일반적이다.
pg_dump는 백업 생성 도구다. plain SQL dump에 -c 또는 -C를 넣으면 복원 시 기존 object를 drop하거나 database를 다시 만들 수 있으므로 production 적용 전에 내용을 확인한다.

pg_dump --help

  • codex:: 2026-06-22 Rebuilt pg_dump as a structured backup reference with format selection, examples, and restore guidance.
  • /home/u613600155/domains/cli.zerotymer.net/public_html/data/pages/postgresql/pg_dump.txt
  • 마지막으로 수정됨: 2026/06/30 00:19
  • 저자 writer