2. DBMS이야기/01. PostgreSQL

[Postgresql] Postgresql 백업 (pg_dump)

OSSW(Open Source System SoftWare 2014. 7. 12. 17:04


PG_DUMP

 

이 방법은 백업 프로그램이 백업 대상에 대해서, SQL 구문의 텍스트 파일을 만들고복원을 할 때는 서버에 이 SQL 구문을 실행해서백업 할 때의 상태로 만드는 기법이다이 방법을 구현한 PostgreSQL 유틸리티 프로그램이 pg_dump 이다.

기본적인 사용법은 다음과 같다:

 

pg_dump 데이터베이스이름 > 출력파일

 

[OPTIONS]

 

-a 스키마를 제외한 데이터만 백업

-b Include large objects in the dump. This is the default behavior except when --schema, --table, or --schema-only is specified, so the -b switch is only useful to add large objects to selective dumps.

-c 데이터베이스 삭제 포함

-C 데이터베이스 생성 구문까지 포함(복구하려는 데이터베이스가 없는 서버에 복구할때)

-d 데이터만 백업 / 복구 (insert 쿼리로 덤프)

-D 컬럼명을 붙인 INSERT 명령어로 데이터를 백업복구시 속도가 늦음. PostgreSQL이외의 다른 데이터베이스에 복구할 때 유용.

-E encoding 인코딩지정

-f filename 출력 파일명

-F format 파일 포맷(costom, tar, plain text)

(1) -Fp : 디폴트 백업 방식(palin text), 복구는 psql 명령어

백업을 자동으로 압축복원시에 필요한 테이블이나 스키마만 따로 분리해서 처리할 수 있음

필요한 경우 plain text 방식으로 변환할 수 있어서 sql문을 수작업으로 편집할 수 있다.

(2) -Fc : 바이너리 형식으로 압축복구는 pg_restore

(3) -Ft : tar로 압축된 파일로 백업복구는 pg_restore

 

-i pg_dump와 데이터베이스 서버와의 버젼차이를 무시

-n schema 스키마 지정복수의 스키마를 지정할 수 있음.

-N schema 지정한 스키마를 백업하지 않음

-o

-O

-s 데이터 없이 스키마 정보 백업 / 복구 (데이터베이스가 존재하는 곳에 복구)

-S username 트리거 작동을 중지 시킬 수 있는 슈퍼유저 이름을 지정

-t tablename 지정한 테이블만 백업

-T tablename 지정한 테이블 백업 안함

-v 자세한 정보를 보여줌

-x 접근권한(grant/revoke) 명령은 백업하지 않음

-Z 아카이브(archive) 형식에서 사용하는 압축레벨을 지정

데이터베이스 접솝 관련 옵션

-h host 서버 호스트 지정

-p port 포트 지정

-U username 사용자명 지정

-W 비밀번호 지정

 

 

Pg_dump 예제

 

옵션: c  (custom)

 

[postgres@olmaster:~]$ pg_dump -d scottdb -U scott -F c -b -v -f scott_scottdb.backup

Password: 

pg_dump: reading schemas

pg_dump: reading user-defined tables

pg_dump: reading extensions

pg_dump: reading user-defined functions

pg_dump: reading user-defined types

pg_dump: reading procedural languages

pg_dump: reading user-defined aggregate functions

pg_dump: reading user-defined operators

pg_dump: reading user-defined operator classes

pg_dump: reading user-defined operator families

pg_dump: reading user-defined text search parsers

pg_dump: reading user-defined text search templates

pg_dump: reading user-defined text search dictionaries

pg_dump: reading user-defined text search configurations

pg_dump: reading user-defined foreign-data wrappers

pg_dump: reading user-defined foreign servers

pg_dump: reading default privileges

pg_dump: reading user-defined collations

pg_dump: reading user-defined conversions

pg_dump: reading type casts

pg_dump: reading table inheritance information

pg_dump: reading rewrite rules

pg_dump: finding extension members

pg_dump: finding inheritance relationships

pg_dump: reading column info for interesting tables

pg_dump: finding the columns and types of table "dept"

pg_dump: finding the columns and types of table "emp"

pg_dump: finding the columns and types of table "bonus"

pg_dump: finding the columns and types of table "salgrade"

pg_dump: finding the columns and types of table "dummy"

pg_dump: flagging inherited columns in subtables

pg_dump: reading indexes

pg_dump: reading indexes for table "dept"

pg_dump: reading indexes for table "emp"

pg_dump: reading constraints

pg_dump: reading foreign key constraints for table "dept"

pg_dump: reading foreign key constraints for table "emp"

pg_dump: reading triggers

pg_dump: reading triggers for table "dept"

pg_dump: reading triggers for table "emp"

pg_dump: reading large objects

pg_dump: reading dependency data

pg_dump: saving encoding = UTF8

pg_dump: saving standard_conforming_strings = off

pg_dump: saving database definition

pg_dump: dumping contents of table bonus

pg_dump: dumping contents of table dept

pg_dump: dumping contents of table dummy

pg_dump: dumping contents of table emp

pg_dump: dumping contents of table salgrade

[postgres@olmaster:~]$ 

 

 

[postgres@olmaster:~]$ ls -l

합계 16

drwx------. 4 postgres postgres 4096 2012-10-31 22:33 9.2/

drwxr-xr-x. 2 postgres postgres 4096 2012-11-18 14:57 oradba/

-rw-r--r--. 1 postgres postgres 5258 2012-12-01 16:27 scott_scottdb.backup

 

 

[postgres@olmaster:~]$ file scott_scottdb.backup 

scott_scottdb.backup: PostgreSQL custom database dump - v1.12-0

 

 

[postgres@olmaster:~]$ cat scott_scottdb.backup |more   

PGDMP^L                                  # 생성된 백업 화일은 바이너리 파일

 

 

옵션 : p (plain)

SQL 구문의 텍스트 파일 형태로 백업

 

[postgres@olmaster:~]$ pg_dump scottdb -U scott -F p -b -v -f scott_scottdb_backup.sql

Password: 

pg_dump: reading schemas

pg_dump: reading user-defined tables

pg_dump: reading extensions

.........

[postgres@olmaster:~]$ ls -alrt

합계 72

-rw-r--r--.  1 postgres postgres   131 2012-10-30 13:30 .bashrc

drwx------.  4 postgres postgres  4096 2012-10-31 22:33 9.2/

drwxr-xr-x. 51 root     root      4096 2012-11-10 23:37 ../

drwxr-xr-x.  2 postgres postgres  4096 2012-11-18 14:57 oradba/

-rw-------.  1 postgres postgres  1238 2012-11-18 14:57 .bash_profile

-rw-r--r--.  1 postgres postgres   532 2012-11-22 09:33 .psqlrc

-rw-------.  1 postgres postgres 13520 2012-12-01 16:14 .psql_history

-rw-------.  1 postgres postgres 11345 2012-12-01 16:26 .bash_history

-rw-r--r--.  1 postgres postgres  5258 2012-12-01 16:27 scott_scottdb.backup

drwx------.  4 postgres postgres  4096 2012-12-01 16:33 ./

-rw-r--r--.  1 postgres postgres  4920 2012-12-01 16:33 scott_scottdb_backup.sql

 

 

[postgres@olmaster:~]$ file scott_scottdb_backup.sql 

scott_scottdb_backup.sql: ASCII text

[postgres@olmaster:~]$ cat scott_scottdb_backup.sql |more  # 생성된 파일은 TEXT 파일

--

-- PostgreSQL database dump

--

-- Dumped from database version 9.2.1

-- Dumped by pg_dump version 9.2.1

-- Started on 2012-12-01 16:33:08 KST

SET statement_timeout = 0;

SET client_encoding = 'UTF8';

.......



posted by 김득은