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