Post

[PostgreSQL] 데이터베이스 백업 및 복원

[PostgreSQL] 데이터베이스 백업 및 복원

이번 포스팅에서는 PostgreSQL에서 데이터베이스 백업 및 복원하는 방법에 대해 알아보겠습니다.

1. pg_dump 명령어

PostgreSQL에서는 간편하고 좋은 데이터베이스 백업 방법으로 pg_dump 명령어를 제공합니다.
pg_dump 명령어의 주요 옵션은 아래와 같습니다.

OptionDescription
-d백업할 데이터베이스 명
-h백업할 데이터베이스 호스트
-p백업할 데이터베이스 포트
-U백업을 수행할 데이터베이스 유저
-n선택한 스키마를 백업
-N선택한 스키마를 제외하고 백업
-t선택한 테이블 또는 뷰를 백업
-T선택한 테이블 또는 뷰를 제외하고 백업
-F백업 포맷을 지정하는 옵션

위 옵션 중, -F 옵션의 포맷 종류는 아래와 같습니다.

FormatDescription
p평문(Plain) SQL format으로 백업 | 기본 옵션 | pg_restore 불가능
cCustom format으로 백업 | 압축 지원 | pg_restore 가능
dDirectory format으로 백업 | 압축 지원 | pg_restore 가능
tTar format으로 백업 | pg_restore 가능

이 중 가장 널리 사용되는 포맷은 Plain formatCustom format 입니다.
Plain format은 평문 SQL로 백업을 하기 때문에 속도가 빠른대신 파일 크기가 크다는 특징이 있고, 반대로 Custom format은 압축을 진행하기 때문에 파일 크기가 작아지는 대신 속도가 느려질 수 있다는 특징이 있습니다.

2. 데이터베이스 백업

pg_dump 명령어를 이용한 데이터베이스 백업 방법은 매우 간단합니다.
앞서 설명드린 명령어를 잘 조합하여 사용하면 원하시는 백업 파일을 만드는데 도움이 될 것 입니다.

아래는 예시입니다.

  1. 데이터베이스 전체 백업
    1
    2
    
    pg_dump -d {$ database} -h {$ host} -U {$ username} -p {$ port} \
     -F c -f {$ backup file name}.dump
    
  2. 데이터베이스 특정 테이블 백업
    1
    2
    3
    4
    
    pg_dump -d {$ database} -h {$ host} -U {$ username} -p {$ port} \
     -t {$ schema}.{$ table} \
     -t {$ schema}.{$ table} \
     -F c -f {$ backup file name}.dump
    

3. 데이터베이스 복원

데이터베이스 복원을 위해서는 pg_restore 명령어를 사용합니다.
백업할 때 사용한 포맷에 따라 -F 옵션 뒤의 포맷을 변경해서 사용하시면 됩니다.
만약 Plain format으로 백업을 진행했다면, psql을 사용하여 복원을 진행해야 합니다.

아래는 예시입니다.

  1. Custom format 파일로 복원
    1
    2
    
    pg_restore -d {$ database} -h {$ host} -U {$ username} -p {$ port} \
     -F c {$ backup file name}.dump
    
  2. Plain format 파일로 복원
    1
    2
    
    psql -d {$ database} -h {$ host} -U {$ username} -p {$ port} \
     -f {$ backup file name}.dump
    

마무리


이번 포스팅에서는 PostgreSQL에서 데이터베이스를 백업하고 복원하는 방법에 대해 알아보았습니다.
pg_dumppg_restore 명령어는 데이터베이스 유지보수 작업에서 가장 기본적이면서도 중요한 도구입니다.
이 명령어들을 적절히 활용하면, 데이터베이스 복제, 마이그레이션 등에도 정말 유용하게 사용할 수 있습니다.

감사합니다.

This post is licensed under CC BY 4.0 by the author.