PostgreSQL 에서 데이터베이스 덤프

  • 주로 PostgreSQL에서 제공하는 CLI 유틸리티인 pg_dump를 사용한다.
  • pg_dump는 데이터베이스의 객체 정의 및 데이터를 SQL 스크립트나 기타 아카이브 형식으로 추출한다.

pg_dump 기본 사용법

덤프(dump)

1
2
3
4
5
-- 기본 형식
pg_dump -U 사용자이름 -h 호스트이름 데이터베이스이름 > 파일이름.sql

-- e.g.
pg_dump -U postgres -h localhost train_data > train_data.sql

복원(restore)

  • 덤프 형식에 따라 복원 유틸리티가 다르다.
  • (1) SQL 스크립트 : psql 유틸리티를 사용한다.
1
psql -U 사용자이름 -d 대상데이터베이스이름 < 파일이름.sql
  • Custom/Tar 형식 : pg_restore 유틸리티를 사용한다.
1
pg_restore -U 사용자이름 -d 대상데이터베이스이름 파일이름.dump

고급 사용법

덤프 형식 지정 (-F 옵션)

형식(-F) 설명 복구 시 사용 유틸리티
P (Plain Text) 기본값으로 SQL 스크립트 형식으로 출력된다. psql
c (Custom) 권장 형식. 압축되며 유연성이 높다.
복원 시 특정 테이블/데이터만 선택해서 복원이 가능함
pg_restores
t (Tar) tar파일 형식. c와 마찬가지로 부분 복원 가능하나, 압축은 선택 사항. pg_restroe
1
2
pg_dump -U postgres -F c -f mydb_backup.dump mydb
-- -f 옵션은 출력 파일 이름을 명시적으로 지정하는 옵션

스키마만 덤프하기 (데이터 제외)

  • -s (--schema-only) : 데이터를 제외한 스키마만 덤프한다.
1
pg_dump -s -U postgres mydb > mydb_schema.sql

데이터만 덤프하기 (스키마 제외)

  • -a(--data-only) : 데이터만 덤프하고, 스키마를 제외한다.
1
pg_dump -a -U postgres mydb > mydb_data.sql

특정 테이블만 덤프

  • -t (--table=테이블이름) : 지정된 테이블만 덤프한다.
1
pg_dump -t 테이블이름 -U postgres mydb > mytable_backup.sql

Comments