Postgresql client의 pg_dump와 pg_restore를 이용하여 Postgresql 데이터를 백업하고 복원할 수 있습니다.
해당 명령어의 공식 문서 내용 일부를 해석하고 정리한 글입니다.
잘못된 정보는 댓글로 남겨주시면 수정하겠습니다.
1. pg_dump
구조
pg_dump [connection-option] [option] [dbname]
pg_dump
는 단일 데이터베이스만 백업합니다
전체 클러스터를 백업하기 위해선 pg_dumpall
을 이용해야 합니다
※ 옵션은 환경변수가 설정되어 있을 경우 해당 환경변수를 기본값으로 사용합니다
연결 옵션(connection-option)
- 환경변수
PGDATABASE: DB명
PGHOST: 서버 정보
PGPORT: 포트 번호
PGUSER: 사용자명
PGPASSWORD: 비밀번호 - -d dbname, --dbname=dbname / DB명
- -h host, --host=host / DB서버 주소
- -p port, --port=port / DB서버 포트 번호
- -U username, --username=username / 사용자명
옵션(option)
- -c, --clean
해당 백업 파일을 통해 복원하기 전에 복원 대상 DB를 정리하는 명령을 추가합니다
대상 DB에 제거할 개체가 없으면 무해한 오류 메시지를 생성합니다
옵션 뒤에--if-exist
을 추가로 덧붙이면 이러한 메세지를 출력하지 않습니다 (ex. -c --if-exist) - -f filename, --file=filename
백업 파일명 지정 - -Fp|c|d|t, --format=p|c|d|t
백업 파일 포맷 지정- p, plain
일반 SQL 스크립트 포맷(기본값, 미압축) - c, custom
사용자 지정 포맷(압축) - d, directory
디렉터리 포맷(압축) - t, tar
tar 포맷(압축 불가)
- p, plain
- -v, --verbose
상세 모드로 백업을 진행합니다
백업 중 자세한 개체 설명과 시작, 종료시간이 std_err 메시지로 출력됩니다 - -Z 0~9, --compress=0~9
압축 수준 지정, 0은 미압축을 의미
사용자 지정 포맷(-Fc)과 디렉터리 포맷(-Fd)의 압축 수준을 변경할 수 있습니다
일반 스크립트 포맷(-Fp)의 기본값은 0입니다
tar 파일은 압축할 수 없습니다
사용 예시
PGPASSWORD=password123 pg_dump -h db -U postgres -F t -d mydb > backup_file/pg_backup.tar
- pg_dump를 이용하여 backup_file 폴더 내부에 pg_backup.tar 백업 파일을 생성
패스워드 입력 절차를 건너뛰기 위해 환경변수를 사용했습니다
2. pg_restore
구조
pg_restore [connection-option] [option] [filename]
연결 옵션(connection-option)
- 환경변수
PGDATABASE: DB명
PGHOST: 서버 정보
PGPORT: 포트 번호
PGUSER: 사용자명
PGPASSWORD: 비밀번호 - -d dbname, --dbname=dbname / DB명
- -h host, --host=host / DB서버 주소
- -p port, --port=port / DB서버 포트 번호
- -U username, --username=username / 사용자명
옵션(option)
- -c, --clean
복원을 진행하기 전에 복원 대상 DB를 정리하는 명령을 추가합니다
대상 DB에 제거할 개체가 없으면 무해한 오류 메시지를 생성합니다
옵션 뒤에--if-exist
을 추가로 덧붙이면 이러한 메세지를 출력하지 않습니다 (ex. -c --if-exist) - -e, --exit-on-error
DB를 복원하는 중 오류가 발생하면 바로 종료합니다.
미사용시 복원이 끝나고 오류 수가 표기됩니다(기본값) - -f filename, --file=filename
복원에 사용할 파일명 - -v, --verbose
상세 모드로 복원을 진행합니다
복원 중 자세한 개체 설명과 시작, 종료시간이 std_err 메시지로 출력됩니다
사용 예시
PGPASSWORD=password123 pg_restore -h db -U postgres -v -d mydb pg_backup.tar
- pg_restore를 이용하여 pg_backup.tar파일로 복원
패스워드 입력 절차를 건너뛰기 위해 환경변수를 사용했습니다
댓글