반응형
Postgresql 데이터 백업 복원
백업, 복원
client에 postgresql가 설치 되어있다면, 서버에 직접 접속하지 않고 아래 --host, --port, --username 옵션을 사용해서 백업을 진행할수 있습니다.
준비물 : postgresql 설치 ( www.postgresql.org/download/ ) 백업할 서버 주소, user 계정, 비밀번호, database명 복원할 서버 주소, user 계정, 비밀번호, database명 |
1. 백업
"%PSQL_HOME%\bin\pg_dump.exe" -Fc --host=%DB_HOST% --port=%DB_PORT% --username=%DB_USER% -d %DB_NAME% > %FILE_HOME%
명령어 예시
pg_dump.exe" -Fc --host=127.0.0.1 --port=5432 --username=ynkim -d YNKIM_DB > D:\db_dump\result\db.dump |
pg_dump 옵션
C:\Program Files\PostgreSQL\11\bin>pg_dump --help
pg_dump 프로그램은 데이터베이스를 텍스트 파일 또는 기타
다른 형태의 파일로 덤프합니다.
사용법:
pg_dump [옵션]... [DB이름]
일반 옵션들:
-f, --file=파일이름 출력 파일 또는 디렉터리 이름
-F, --format=c|d|t|p 출력 파일 형식(사용자 지정, 디렉터리, tar,
일반 텍스트(초기값))
-j, --jobs=개수 덤프 작업을 병렬 처리 함
-v, --verbose 작업 내역을 자세히 봄
-V, --version 버전 정보를 보여주고 마침
-Z, --compress=0-9 출력 자료 압축 수위
--lock-wait-timeout=초 테이블 잠금 시 지정한 초만큼 기다린 후 실패
--no-sync fsync 작업 생략
-?, --help 이 도움말을 보여주고 마침
출력 내용을 다루는 옵션들:
-a, --data-only 스키마 빼고 자료만 덤프
-b, --blobs Large Object들도 함께 덤프함
-B, --no-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 일반 텍스트 형식에서 사용할 슈퍼유저 사용자 이름
-t, --table=TABLE 지정한 이름의 테이블들만 덤프
-T, --exclude-table=TABLE 지정한 테이블들만 빼고 덤프
-x, --no-privileges 접근 권한 (grant/revoke) 정보는 덤프 안 함
--binary-upgrade 업그레이드 유틸리티 전용
--column-inserts 칼럼 이름과 함께 INSERT 명령으로 자료 덤프
--disable-dollar-quoting $ 인용 구문 사용안함, SQL 표준 따옴표 사용
--disable-triggers 자료만 복원할 때 트리거 사용을 안함
--enable-row-security 로우 보안 활성화 (현재 작업자가 접근할 수
있는 자료만 덤프 함)
--exclude-table-data=테이블 해당 테이블 자료는 덤프 안함
--if-exists 객체 삭제 시 IF EXISTS 구문 사용
--inserts COPY 대신 INSERT 명령으로 자료 덤프
--load-via-partition-root 상위 테이블을 통해 하위 테이블을 로드함
--no-comments 코멘트는 덤프 안함
--no-publications 발행 정보는 덤프하지 않음
--no-security-labels 보안 라벨 할당을 덤프 하지 않음
--no-subscriptions 구독 정보는 덤프하지 않음
--no-synchronized-snapshots 병렬 작업에서 스냅샷 일관성을 맞추지 않음
--no-tablespaces 테이블스페이스 할당을 덤프하지 않음
--no-unlogged-table-data 언로그드 테이블 자료는 덤프하지 않음
--quote-all-identifiers 예약어가 아니여도 모든 식별자는 따옴표를 씀
--section=SECTION 해당 섹션(pre-data, data, post-data)만 덤프
--serializable-deferrable 자료 정합성을 보장하기 위해 덤프 작업을
직렬화 가능한 트랜잭션으로 처리 함
--snapshot=SNAPSHOT 지정한 스냅샷을 덤프 함
--strict-names 테이블이나 스키마를 지정했을 때 그 패턴에 맞는
객체가 적어도 하나 이상 있어야 함
--use-set-session-authorization
SET SESSION AUTHORIZATION 명령을 ALTER OWNER 명령
대신 사용하여 소유권 설정
연결 옵션들:
-d, --dbname=DBNAME 덤프할 데이터베이스
-h, --host=HOSTNAME 접속할 데이터베이스 서버 또는 소켓 디렉터리
-p, --port=PORT 데이터베이스 서버의 포트 번호
-U, --username=NAME 연결할 데이터베이스 사용자
-w, --no-password 암호 프롬프트 표시 안 함
-W, --password 암호 입력 프롬프트 보임(자동으로 처리함)
--role=ROLENAME 덤프 전에 SET ROLE 수행
2. 복원
pg_dump 를 실행해서 파일이 생성되었다면, 아래 구문을 이용해서 데이터를 밀어 넣을수 있습니다.
"%PSQL_HOME%\bin\pg_restore.exe" -Fc --host=%DB_HOST% --port=%DB_PORT% --username=%DB_USER% -d %DB_NAME% %FILE_HOME%
명령어 예시
pg_restore.exe" -Fc --host=211.64.xxx.xxx --port=5432 --username=shlee -d SH_DB D:\db_dump\result\db.dump |
pg_restore 옵션
C:\Program Files\PostgreSQL\11\bin>pg_restore --help
pg_restore 프로그램은 pg_dump로 만들어진 자료파일로 PostgreSQL 데이터베이스에
그 자료를 일괄 입력합니다.
사용법:
pg_restore [옵션]... [파일]
일반 옵션들:
-d, --dbname=NAME 접속할 데이터베이스 이름
-f, --file=FILENAME output file name (- for stdout)
-F, --format=c|d|t 백업 파일 형식 (지정하지 않으면 자동분석)
-l, --list 자료의 요약된 목차를 보여줌
-v, --verbose 자세한 정보 보여줌
-V, --version 버전 정보를 보여주고 마침
-?, --help 이 도움말을 보여주고 마침
리스토어 처리를 위한 옵션들:
-a, --data-only 스키마는 빼고 자료만 입력함
-c, --clean 다시 만들기 전에 데이터베이스 개체 지우기(삭제)
-C, --create 작업 대상 데이터베이스를 만듦
-e, --exit-on-error 오류가 생기면 끝냄, 기본은 계속 진행함
-I, --index=NAME 지정한 인덱스 만듦
-j, --jobs=NUM 여러 병렬 작업을 사용하여 복원
-L, --use-list=FILENAME 출력을 선택하고 해당 순서를 지정하기 위해
이 파일의 목차 사용
-n, --schema=NAME 해당 스키마의 개체들만 복원함
-N, --exclude-schema=NAME 해당 스키마의 개체들은 복원 안함
-O, --no-owner 개체 소유권 복원 건너뛰기
-P, --function=NAME(args) 지정한 함수 만듦
-s, --schema-only 자료구조(스키마)만 만듦
-S, --superuser=NAME 트리거를 사용하지 않기 위해 사용할 슈퍼유저
사용자 이름
-t, --table=NAME 복원할 객체 이름 (테이블, 뷰, 기타)
-T, --trigger=NAME 지정한 트리거 만듦
-x, --no-privileges 접근 권한(grant/revoke) 지정 안함
-1, --single-transaction 하나의 트랜잭션 작업으로 복원함
--disable-triggers 자료만 복원할 때 트리거 사용을 안함
--enable-row-security 로우 보안 활성화
--if-exists 객체 삭제 시 IF EXISTS 구문 사용
--no-comments 코멘트는 복원하지 않음
--no-data-for-failed-tables 만들 수 없는 테이블에 대해서는 자료를 덤프하지 않음
--no-publications 발행 정보는 복원 안함
--no-security-labels 보안 라벨을 복원하지 않음
--no-subscriptions 구독 정보는 복원 안함
--no-tablespaces 테이블스페이스 할당을 복원하지 않음
--section=SECTION 지정한 섹션만 복원함
섹션 종류: pre-data, data, post-data
--strict-names 테이블이나 스키마를 지정했을 때 그 패턴에 맞는
객체가 적어도 하나 이상 있어야 함
--use-set-session-authorization
SET SESSION AUTHORIZATION 명령을 ALTER OWNER 명령
대신 사용하여 소유권 설정
연결 옵션들:
-h, --host=HOSTNAME 접속할 데이터베이스 서버 또는 소켓 디렉터리
-p, --port=PORT 데이터베이스 서버의 포트 번호
-U, --username=NAME 연결할 데이터베이스 사용자
-w, --no-password 암호 프롬프트 표시 안 함
-W, --password 암호 입력 프롬프트 보임(자동으로 처리함)
--role=ROLENAME 복원 전에 SET ROLE 수행
The options -I, -n, -N, -P, -t, -T, and --section can be combined and specified
multiple times to select multiple objects.
사용할 입력 파일을 지정하지 않았다면, 표준 입력(stdin)을 사용합니다.
오류보고: <pgsql-bugs@postgresql.org>.
반응형
댓글