DB & AWS Knowledge
pg_dump 기본 명령어 및 예시 본문
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 시에는 앞에 스키마를 명시하는 것을 권장한다.
- 아래의 옵션 중 jobs 옵션 사용 시에는 파일 형식을 directory 로만 지정 해야만 사용 할 수 있다.
반응형
Comments