PostgreSQL 백업 및 복원 하는 방법



중요한 운영 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










[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 데이터베이스 생성


–> 복원하기 위해서는 비어 있는 데이터베이스가 필요합니다.










user_ra=# CREATE DATABASE user_ra_2 OWNER user;


CREATE DATABASE







– user_ra_2 데이터베이스에 복원


– 정상적으로 복원 되었는지 확인


–> \c 명령어로 user_ra_2 데이터베이스에 커넥션


–> \d 명령어로 테이블 목록 확인










[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




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




참고문서






Leave a Comment