본문 바로가기
아이티 공부/PostgreSQL

PostgreSQL 백업 및 복원 하는 방법

by Klero 2018. 8. 30.


중요한 운영 DB일 경우 DB를 백업하는 것은 중요합니다.
저는 SQL 덤프를 이용하여 백업 하는 방법을 알려드리겠습니다.
SQL 덤프를 통한 백업으로 pg_dump 명령어를 사용하는데요
pg_dump는 PostgreSQL에서 제공해주는 유틸리티라고 보면 됩니다.

pg_dump 명령어를 통해 백업을 하면 텍스트 파일로 생성됩니다.
또한 백업하려는 테이블에는 읽기 액세스에 대한 권한이 있어야 합니다.
만약 전체 DB를 백업하려면 Superuser 권한이 있는 유저로 실행해야 합니다.

pg_dump로 생성한 텍스트 파일은 psql 명령어를 이용하여 복원할 수 있습니다.
복원을 하기 위해서는 백업한 데이터베이스를 소유하고 있는 유저 또는
이 데이터베이스에 대해 권한이 부여된 유저가 존재해야 됩니다.

* pg_restore는 비 텍스트 파일로 생성된(백업된) DB를 복원할 수 있습니다.

1. 특정 DB만 백업 및 복원 하는 방법

(1). 백업 및 복원

백업 : pg_dump -U {소유주} {DB명} > {백업파일명}
복원 : psql -U {소유주} {DB명} < {백업파일명}

- user_ra 데이터베이스를 db_backup 파일로 백업
- 백업파일 경로 지정 가능
--> pg_dump -U user user_ra > /home/user/db_backup

1
2
3
[klero@centos01 bin]$ pg_dump -U user user_ra > db_backup
[klero@centos01 bin]$ psql -U user -d user_ra
user_ra=#



- 백업 받은 user_ra 데이터베이스를 복원할 user_ra_2 데이터베이스 생성
--> 복원하기 위해서는 비어 있는 데이터베이스가 필요합니다.


1
2
user_ra=# CREATE DATABASE user_ra_2 OWNER user;
CREATE DATABASE




- user_ra_2 데이터베이스에 복원
- 정상적으로 복원 되었는지 확인
--> \c 명령어로 user_ra_2 데이터베이스에 커넥션
--> \d 명령어로 테이블 목록 확인


1
2
3
4
5
6
7
8
[klero@centos01 bin]$ psql -U user user_ra_2 < db_backup
[klero@centos01 bin]$ psql -U user -d user_ra
user_ra=#
user_ra=# \c user_ra_2
 You are now connected to database "user_ra_2" as user "user".
 user_ra_2=#
user_ra_2=# \d




2. 특정 테이블만 백업 및 복원 하는 방법

(1). 백업 및 복원

- 백업 : pg_dump -U {소유주} {DB명} -t {테이블명} > {백업파일명}
--> pg_dump -U user user_ra -t usertable > db_backup

- 복원 : psql -U {소유주}  -f {백업파일명} {DB명}
--> psql -U user -f db_backup user_ra


이 글의 내용이 업무 또는 스터디에 꼭 도움이 되시길 바라겠습니다.


참고문서

PostgreSQL, yum을 통한 RHEL6.5에 설치 방법 : http://klero.tistory.com/entry/PostgreSQL-리눅스RHEL65에-설치하는-방법


댓글