Postgre SQL 백업 및 복원

| 2018년 11월 29일 | 0 Comments

1. 테스트 환경

CentOS 7, PostgreSQL 10.5 에서 작성된 글이며, smile 과 serv db 를 가지고 테스트 진행하였으며 각각 갖고 있는 테이블은 위와 같이 만들어져 있는 상황입니다.

또한 smileserv 라는 계정을 하나 만들어 놓은 상황입니다.
본 글에서는 postgresql 에서 plain text 형태의 query 형 dump 파일을 생성하여 db 및 table 등을 복원하는 내용입니다.

 

 

 

2. all dump 백업 및 복원

 

pg_dumpall 명령어를 통해 전체 백업을 한 후 smile 과 serv db 를 모두 drop 시키고, smileserv 계정을 삭제 한 후 덤프를 넣어보도록 하겠습니다.

# pg_dumpall > [덤프파일명]

위와 같이 명령어를 넣을 경우 postgre 내에서 설정 된 모든 role(계정), database 등을 덤프로 만들게 됩니다. 이제 db 와 계정을 삭제하도록 하겠습니다.

이 상황에서 단순하게 all dump 파일로 복구를 해보겠습니다.

# psql -f [덤프파일명]

위와 같이 dump에 따라 작업을 진행하며 복구를 시작합니다.

복원 이후 role 과 db가 다시 정상적으로 생성 된 것을 확인할 수 있습니다.

 

 

3. db 만 백업 및 복원

 

smile 이란 db 만 백업 후 복구해보도록 하겠습니다.

# pg_dump [db 명] > [덤프파일명]

Db 백업의 경우, 처음에 db를 생성해주지 않기 때문에 , db를 생성하고 작업을 하셔야 합니다.

smile db의 test와 test2 테이블을 모두 삭제한 상황에서 복원을 진행하겠습니다.

 

# psql -f [덤프파일명] [db 명]

 

테이블 2개 모두 복원 된 것을 확인할 수 있습니다.

 

 

4. table 만 백업 및 복원

 

smile db 의 test2 table 만 백업 후 복구해보도록 하겠습니다.

# pg_dump [db 명] -t [table 명] > [덤프파일명]

Test2 table을 삭제 후 복원을 진행합니다.

# psql -f [덤프파일명] [db 명]

db만 백업 하는 것과 같이 db명만 지정해주시면 됩니다.

table의 경우 create문이 들어감으로 생성되어 있는 이름의 table일 경우 주의 해주셔야 합니다.

 

 

5. 테이블 구조(schema) 만 백업 및 복구

데이터의 백업이 필요 없이 table 의 schema 만 필요할 경우에 사용하는 방법입니다.

Smile db 의 test table 을 가지고 진행 할 것이며 schema 의 형태와 데이터는 아래와 같습니다.

해당 table 의 스키마만 추출 후 table 을 삭제해보도록 하겠습니다.

# pg_dump -t [table 명 ] -s [db 명 ] > [ 덤프파일명 ]

테이블 삭제 후 복구를 시켜보겠습니다. 명령어는 위의 복구 명령어들과 동일합니다.

복구 이후 테이블 생성 후 구조는 동일하지만, 데이터를 갖고 있지 않는 test 테이블이 생성되었습니다.

Category: 솔루션/IT기타

윤 황용

About the Author ()