[PostgreSQL] dump & restore

식빵·2025년 1월 15일
0

postgresql-memo

목록 보기
36/36

🍞 pg_dump 로 덤프내기


옵션 파라미터

  • -U : username
  • -h : host (생략 시 => localhost)
  • -d : database name
  • -n : 덤프 받을 테이블이 포함된 스키마
  • -p : 포트번호 (생략 시 => 5432)
  • -t : 덤프 받을 테이블 이름
  • -F : 덤프를 내는 방식 지정
    • -F p : sql 파일로 덤프 (default)
    • -F c : 압축한 아카이브 파일로 덤프
    • -F d : 디렉토리에 덤프 파일 생성
  • -f : 덤프 결과 파일명

옵션 파라미터 중에서 -F 에 따라 다른 방식의 덤프를 지원합니다.
이 중에서 SQL 파일로 덤프, 압축한 아카이브 파일로 덤프 를 만드는 방법만 보도록 하겠습니다.



방법 1. SQL 덤프

### 형식:
# pg_dump -U [사용자 명] -h [호스트] -d [데이터베이스] -n [스키마] -p [포트번호] \
#	-t [(스키마).테이블 명]
#   -f [덤프 결과 파일명].sql;

### 예시:
pg_dump -U postgres -h localhost -d postgres -n public -p 5432 \
	-t public.tl_scco_ctprvn \
    -f tl_scco_ctprvn.sql;



방법 2. 압축 아카이브 덤프

방법 1. SQL 덤프 와 거의 유사하지만 다른 점이 몇가지 있습니다.

  1. -F c 옵션 사용
  2. -f*.sql 이 아닌 다른 확장자 사용 (헷갈림 방지용)

### 형식:
# pg_dump -U [사용자 명] -h [호스트] -d [데이터베이스] -n [스키마] -p [포트번호] -F c \
#	-t [(스키마).테이블 명]
#   -f [덤프 결과 파일명].dump;


### 예시:
pg_dump -U postgres -h localhost -d postgres -n public -p 5432 \
	-F c \
	-t public.tl_scco_ctprvn_202412 \
	-f tl_scco_202412_bck.dump;

개인적으로는 압축 아카이브 방식이 더 좋은 거 같습니다.
SQL 로 덤프 낼 때보다 파일 크기가 확연히 작아집니다.



보충:

여러 테이블을 하나의 덤프 파일로!

-t 옵션을 연달아서 작성하면 됩니다.

## SQL 덤프
pg_dump -U postgres -h localhost -d postgres -n public -p 5432 \
	-t public.tl_scco_ctprvn \
	-t public.tl_scco_sig \
    -t public.tl_scco_emd \
    -t public.tl_scco_li \
	-f total_bck.sql;

## 압축 아카이브 덤프 방식도 똑같이 동작합니다!



특정 스키마 전체를 덤프 내기

-t 옵션을 전부 빼고, -n 옵션만 정확히 명시하면 됩니다.

pg_dump -U postgres -h localhost -d dump -p 5432 -n public -F c -f dump_public.dump





🍞 덤프 복원하기


덤프 결과물이 SQL 인지, 압축 아카이브 인지에 따라
복원하는 명령어를 달리 해야합니다.

  • sql 덤프 : psql -f
  • 아카이브 덤프 : pg_restore

가볍게 아래 예시를 보면 대충 어떻게 하는지 감이 오실 겁니다.

SQL 덤프 복원

# 옵션 파라미터는 pg_dump 와 유사합니다.
psql -U postgres -d postgres -h localhost -p 5432 -f total_dump.sql

아카이브 덤프 복원

# 옵션 파라미터는 pg_dump 와 유사합니다.
pg_restore -U postgres -d postgres -h localhost -p 5432 \
test_tl_scco_202412.dump




참고 링크


https://www.postgresql.org/docs/current/backup.html
https://eehoeskrap.tistory.com/555
https://stackoverflow.com/questions/30171063/how-to-generate-a-postgresql-dump-from-a-docker-container

profile
백엔드를 계속 배우고 있는 개발자입니다 😊

0개의 댓글