중요한 운영 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
이 글의 내용이 업무 또는 스터디에 꼭 도움이 되시길 바라겠습니다.
참고문서
댓글