본문 바로가기
PostgreSQL

PostgreSQL DB 백업(Dump) 및 복구(Restore)

by 이노닝 2023. 6. 21.

이번에는 Postgresql 데이터 백업 및 복구에 관해 몇가지 서술하고자 합니다.

먼저 Postgresql DB에 접근하려면 PostgreSQL 클라이언트 응용 프로그램이 필요한데요.

대표적으로 pgAdmin 이라는 프로그램이 있습니다. postgresql 버전에 따라 3 또는 4 버전을 설치하게 되어있는데, 해당 프로그램이 설치되어 있어야 합니다. 또는 EDB postgresql server가 설치되어있다면, 이제부터 백업 및 복구를 사용 할 수 있습니다. 이번에 설명드릴 부분은 대화형 클라이언트(CMD Console)로 이용할 것이기 때문에 위 내용 중 1개는 충족해야 사용 할 수 있습니다.

 

환경변수 설정은 이전글(postgresql COPY)에서 설명했기 때문에 이번글에서는 작성하지 않겠습니다.

내용만 간단하게 서술하자면

먼저 테이블 단위의 dump 입니다.

PostgreSQL DB BACKUP

pg_dump –h localhost –p 5432 –U noni –W –t tb_noni_dist –Z 1 –j 4 –F d –f noni_bak

-h : 데이터베이스에 액세스하려는 원격 호스트 주소

-p : DB PORT

-U : DB 사용자 명 (Owner)

-W : 패스워드를 입력받지 않음.

-t : dump 하려는 테이블 명 만약 테이블 2개를 백업한다면,

--> -t tb_noni_dist -t tb_noni_text 이런식으로 사용하면 됩니다.

--> 그렇다면 테이블이 100개라면 어떻게 할까요? 이건 나중에 다루도록 하겠습니다.

-Z : 파일의 압축률을 의미합니다. 높을수록 압축률이 높아짐. 용량이 작아짐. 하지만 작업속도가 느려짐

--> Default 는 1입니다. 용량 아끼는것보다 시간 아끼는게 좋다고 봅니다. 

-j : 병렬처리 개수. 쉽게 예를 들자면, CPU 싱글코어 1개 사용할것이냐 듀얼코어 2개 사용할것이냐 쿼드코어 4개 사용할 것이냐 의미입니다. 통상적으로 4 ,8, 12 등등이 있지만 DB서버에 부하를 주지 않는 선에서 병렬 처리를 하도록 합시다. 사양이 모두 다르기 때문에 절대적인 것은 없습니다. 본인 판단하에 작업해야 합니다.

-F d : Export 되는 파일 형식을 디렉토리 형태로 작업한다는 의미입니다.

-f : 파일명입니다.

다음으로는 DB 복구 방법입니다.

 

PostgreSQL DB RESTORE

pg_restore -h localhost -U noni -p 5432 -W -c -d postgres noni_bak

-h : 데이터베이스에 액세스하려는 원격 호스트 주소

-U : 사용자 명(Owner)

-p : DB PORT

-W : 패스워드를 입력받지 않음

-c : 기존 테이블이 존재 할 경우, Clean 후 DB 적재.

-d : 데이터 베이스 명

마지막 : 백업 파일 명

위 작업은 모두 Cmd Line에서 작업이 가능합니다.

운영체제 여부 상관 없이 환경 변수만 설정이 가능합니다.

이런한 명령어를 통해 쉘이나 배치 프로그램을 만들어서

주기적으로 데이터 관리도 가능하지 않을까요?

그리고 유저별, 테이블별 다양하게 백업 및 리스토어가 가능 할 것 같습니다.

마지막으로 놓쳐서는 안될 항목에 대해 말씀드리겠습니다.

- OS 사용자(그룹)의 파일/디렉토리 읽기 쓰기 권한 필요.

- 백업,복구 시 충분한 용량 확보 (백업 할 외장하드, 복구 할 서버 스토리지)

- 작업 진행 시 디렉토리 경로

- Postgresql Client Program 설치 및 백업 리스토어 버전 확인.

- Postgresql 에서 원격으로 접근하고자 하는 유저의 Schema 접근 여부

   -> 즉, Noni 라는 사용자가 Origin_DB 스키마에 접근 가능한지 유무

- Restore 시 사용자(Roll) 확인.

- 시퀀스(Sequence) 확인 

- 테이블스페이스(TS) 확인

 

단 한줄로 백업과 리스토어가 가능하지만, 

놓쳐서 안될 사항들입니다. 위의 내용들을 꼭 숙지해주세요.

**당부의 말씀.

실무자의 충분한 검토 및 숙지 후 데이터를 다루시길 바랍니다.

 

'PostgreSQL' 카테고리의 다른 글

PostgreSQL Vacuum 작업으로 깔끔하게!  (0) 2023.07.03
postgresql.conf 쉽게 설정하기  (0) 2023.06.30
PostgreSQL 포트 열기  (0) 2023.06.30
PostgreSQL COPY  (0) 2023.06.20