PostgreSQL 백업과 복원

    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 포맷(압축 불가)
    • -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파일로 복원
      패스워드 입력 절차를 건너뛰기 위해 환경변수를 사용했습니다

    참고

    댓글