pg_dump
1. 데이타베이스 전체 백업
| CURRENT_DATETIME=`date +'%Y%m%d.%H%M%S'` |
| |
| PG_HOST=localhost |
| PG_PORT=5432 |
| PG_USER=graha |
| PG_DATABASE=graha_sample |
| BACKUP_FILE=${PG_DATABASE}.${CURRENT_DATETIME}.sql |
| |
| |
| |
| pg_dump \ |
| -h ${PG_HOST} -p ${PG_PORT} \ |
| -U ${PG_USER} \ |
| ${PG_DATABASE} > ${BACKUP_FILE} |
| |
| gzip -9 ${BACKUP_FILE} |
2. 데이타베이스에서 특정 스키마만 백업
| CURRENT_DATETIME=`date +'%Y%m%d.%H%M%S'` |
| |
| PG_HOST=localhost |
| PG_PORT=5432 |
| PG_USER=graha |
| PG_DATABASE=graha_sample |
| |
| SCHEMA=memo |
| BACKUP_FILE=${PG_DATABASE}.${CURRENT_DATETIME}.sql |
| |
| |
| |
| pg_dump \ |
| -h ${PG_HOST} -p ${PG_PORT} \ |
| -U ${PG_USER} \ |
| ${PG_DATABASE} \ |
| --schema=${SCHEMA} > ${BACKUP_FILE} |
| |
| gzip -9 ${BACKUP_FILE} |
여러 스키마를 백업하려고 하는 경우에는 --schema=
를 여러 번 지정하면 된다.
3. 데이타베이스에서 특정 테이블만 백업
| CURRENT_DATETIME=`date +'%Y%m%d.%H%M%S'` |
| |
| PG_HOST=localhost |
| PG_PORT=5432 |
| PG_USER=graha |
| PG_DATABASE=graha_sample |
| |
| TABLES=memo.memo |
| BACKUP_FILE=${PG_DATABASE}.${CURRENT_DATETIME}.sql |
| |
| |
| |
| pg_dump \ |
| -h ${PG_HOST} -p ${PG_PORT} \ |
| -U ${PG_USER} \ |
| ${PG_DATABASE} \ |
| --table=${TABLES} > ${BACKUP_FILE} |
| |
| gzip -9 ${BACKUP_FILE} |
여러 테이블을 백업하려고 하는 경우에는 --table=
를 여러 번 지정하면 된다.
4. 다른 유용한 파라미터
--no-tablespaces
: 테이블스페이스 정보는 제외한다.
--data-only
: 데이타만 백업한다.
--schema-only
: 데이타는 제외하고, 스키마(DDL 등)만 백업한다.
--exclude-table
: 제외할 테이블
--no-owner
: 소유자 정보 제외
다른 파라미터는 다음의 명령으로 확인한다.
pg_dump --help
5. 복원
| psql \ |
| -h ${PG_HOST} -p ${PG_PORT} \ |
| -U ${PG_USER} \ |
| ${PG_DATABASE} \ |
| -f ${BACKUP_FILE} |