Today
Total
KoreanEnglishFrenchGermanJapaneseSpanishChinese (Simplified)
관리 메뉴

DB & AWS Knowledge

pg_dump 기본 명령어 및 예시 본문

PostgreSQL/pg_dump 및 pg_restore

pg_dump 기본 명령어 및 예시

`O` 2021. 3. 8. 02:08
728x90
반응형
  • 참고 Doc 사이트 : https://www.postgresql.org/docs/10/app-pgdump.html

  • mysqldump 와 같이 PostgreSQL / PPAS 는 pg_dump 명령어를 사용 할 수 있다.
    이를 통하여 mysqldump 와 유사하게 옵션을 지정하여 DB 내 필요한 부분만 저장할 수 있다.
    pg_dump --help 를 통하여 사용 할 수 있는 옵션을 확인 할 수 있다.

    (출처 : http://www.devkuma.com/books/pages/1202 (옵션별 한글 설명 정리 사이트))

$ pg_dump --help
pg_dump 프로그램은 데이터베이스를 텍스트 파일 또는 기타
다른 형태의 파일로 덤프합니다.

사용법:
  pg_dump [옵션]... [DB이름]

일반 옵션들:
  -f, --file=FILENAME         출력 파일 이름
  -F, --format=c|t|p|d        출력 파일 형식(사용자 지정, tar, 일반 텍스트)
  -v, --verbose               세부 정보 표시 모드
  -Z, --compress=0-9          압축되는 형식의 압축 수준
  --lock-wait-timeout=TIMEOUT 테이블 잠금에 대한 TIMEOUT을 기다린 후 실패

  --help                      이 도움말을 표시하고 종료
  --version                   버전 정보를 출력하고 종료

출력 내용을 다루는 옵션들:
  -a, --data-only             스키마 빼고 자료만 덤프
  -b, --blobs                 Large Object들도 함께 덤프함
  -c, --clean                 다시 만들기 전에 데이터베이스 개체 지우기(삭제)
  -C, --create                데이터베이스 만드는 명령구문도 포함시킴
  -E, --encoding=인코딩       지정한 인코딩으로 자료를 덤프 함
  -n, --schema=SCHEMA         지정한 SCHEMA들 자료만 덤프
  -N, --exclude-schema=SCHEMA 지정한 SCHEMA들만 빼고 모두 덤프
  -o, --oids                  OID 포함해서 덤프
  -O, --no-owner              일반 텍스트 형식에서
                              개체 소유권 복원 건너뛰기
  -s, --schema-only           자료구조(스키마)만 덤프
  -S, --superuser=NAME        일반 텍스트 형식에서 사용할 superuser 사용자 이름
  -t, --table=TABLE           지정한 이름의 테이블들만 덤프
  -T, --exclude-table=TABLE   지정한 테이블들만 빼고 덤프
  -x, --no-privileges         액세스 권한 (grant/revoke) 정보는 덤프 안 함
  --binary-upgrade            업그레이드 유틸리티 전용
  --inserts                   COPY가 아니라 INSERT 명령으로 데이터 덤프
  --column-inserts            열 이름과 함께 INSERT 명령으로 데이터 덤프
  --disable-dollar-quoting    $ 인용 구문 사용안함 , SQL 표준 따옴표 사용
  --disable-triggers          자료만 복원할 때 트리거 사용을 안함
  --no-tablespaces            테이블스페이스 할당을 덤프하지 않음
  --role=ROLENAME             덤프 전에 SET ROLE 수행
  --use-set-session-authorization
                              SET SESSION AUTHORIZATION 명령을 ALTER OWNER 명령
                              대신 사용하여 소유권 설정

연결 옵션들:
  -h, --host=HOSTNAME      접속할 데이터베이스 서버 또는 소켓 디렉터리
  -p, --port=PORT          데이터베이스 서버의 포트 번호
  -U, --username=NAME      연결할 데이터베이스 사용자
  -w, --no-password        암호 프롬프트 표시 안 함
  -W, --password           암호 입력 프롬프트 보임(자동으로 처리함)

데이터베이스 이름을 지정하지 않았다면, PGDATABASE 환경변수값을
사용합니다.

 

  • 사용자마다 사용하는 옵션은 서로 다르나 개인적으로 자주 사용하는 옵션을 추가로 설명하면 아래와 같다.

일반 옵션들:
  -f, --file=FILENAME         출력 파일 이름 : 원하는 경로 혹은 회사에서 백업등으로 사용하는 디렉토리에 dump 를 받는 경우가 많다. 아래의 F 를 통한 저장파일 형식과 거의 붙어서 사용한다.
  -F, --format=c|t|p|d        출력 파일 형식(사용자 지정, tar, 일반 텍스트) : 사용자에게 맞는 형식을 선택가능하나 일부 기능 및 오브젝트 특성에 따라 dump 형식을 조절 해야 할 수 있다. (ex: parallel 사용시 형식은 d 만 가능)
  -n, --schema=SCHEMA         지정한 SCHEMA들 자료만 덤프 : 단일 스키마내에 오브젝트만 dump 시에 유용하다. (dump 시 조금이라도 다른 스키마랑 혼용 된다면 스키마를 분리한 dump 수행을 구성 해 볼 수 있다.)
  -N, --exclude-schema=SCHEMA 지정한 SCHEMA들만 빼고 모두 덤프
  -s, --schema-only           자료구조(스키마)만 덤프 : DB 내 데이터없이 구조만 dump 를 한다. 예를 들어 테이블 dump 시, 이 옵션을 쓰면 Mysql / MariaDB 의 show create table 에 대응하는 구조 dump 기능을 쓸 수 있다.
  -t, --table=TABLE           지정한 이름의 테이블들만 덤프 : 특정 테이블만 dump 시 사용하는 기능, 아래의 설명과 같이 이를 사용시에는 단일 스키마 dump 가 아니면 스키마 명시를 권장한다.
  -T, --exclude-table=TABLE   지정한 테이블들만 빼고 덤프
  -j, --jobs=NUMBER           dump 시 병렬 수행 할 job process 의 개수 : parallel 옵션에 대응 하는 옵션이다. dump 용량이 클수록 이를 적절히 활용하면 더 빠르게 dump 를 수행 할 수 있다.

 

  • 실제 사용시에는 아래와 같이 옵션을 사용해서 dump 를 수행한다.

    • 아래의 옵션 중 jobs 옵션 사용 시에는 파일 형식을 directory 로만 지정 해야만 사용 할 수 있다.

    • 각 서버 사양 및 상황마다 jobs 를 통한 속도 향상 혹은 단일 dump 와 비슷한 상황이 나올 수 있으므로 실제 수행 전, 속도 테스트를 수행 해 본다.

    • MySQL / MariaDB 와는 다르게 PostgreSQL / PPAS 는 db 및 스키마 구분이 명확하므로 테이블 단위 등의 세부 단위 dump 시에는 앞에 스키마를 명시하는 것을 권장한다.

 

반응형
Comments