PostgreSQL에서 테이블 형상 백업 등의 작업 진행 시 사용 가능한 pg_dump 와 백업 받은 dump 파일을 이용하여 pg_restore 를 사용한 복구 방법
- pg_restore -t {테이블} 옵션 사용시 관련 오브젝트(인덱스, 파티션 등) 복구 안되므로 주의
1. schema 백업
On-Prem : pg_dump -d {디비명} -n {스키마명} -f {백업파일명}
RDS : pg_dump -h {rds 주소} -p {포트번호} -U {유저명} -d {디비명} -n {스키마명} -f {백업파일명}
-n 옵션으로 스키마 지정
text 포맷
-- schema only
pg_dump -h pgtest.cmg429ufp1c1.ap-northeast-2.rds.amazonaws.com -p 5432 -U postgres -s -d postgres -n test -v -f C:\pg_bak\test_meta.sql
-- data only
pg_dump -h pgtest.cmg429ufp1c1.ap-northeast-2.rds.amazonaws.com -p 5432 -U postgres -a -d postgres -n test -v -f C:\pg_bak\test_data.sql
-- schema + data
pg_dump -h pgtest.cmg429ufp1c1.ap-northeast-2.rds.amazonaws.com -p 5432 -U postgres -d postgres -n test -v -f C:\pg_bak\test_all.sql
-Fc 옵션 추가(안주면 -Fp가 기본값으로 text 형태)
dump 포맷
-- schema + data
pg_dump -h pgtest.cmg429ufp1c1.ap-northeast-2.rds.amazonaws.com -p 5432 -U postgres -d postgres -n test -v -Fc -f C:\pg_bak\test.dmp
2. table 백업
On-Prem : pg_dump -d {디비명} -t {테이블명} -f {백업파일명}
RDS : pg_dump -h {rds 주소} -p {포트번호} -U {유저명} -d {디비명} -t {테이블명} -f {백업파일명}
-t 옵션으로 테이블 지정
text 포맷
-- schema only
pg_dump -h pgtest.cmg429ufp1c1.ap-northeast-2.rds.amazonaws.com -p 5432 -U postgres -s -d postgres -t test.tab1 -v -f C:\pg_bak\tab1_meta.sql
-- data only
pg_dump -h pgtest.cmg429ufp1c1.ap-northeast-2.rds.amazonaws.com -p 5432 -U postgres -a -d postgres -t test.tab1 -v -f C:\pg_bak\tab1_data.sql
-- schema + data
pg_dump -h pgtest.cmg429ufp1c1.ap-northeast-2.rds.amazonaws.com -p 5432 -U postgres -d postgres -t test.tab1 -v -f C:\pg_bak\tab1_all.sql
-Fc 옵션 추가(안주면 -Fp가 기본값으로 text 형태)
dump 포맷
-- shcema + data
pg_dump -h pgtest.cmg429ufp1c1.ap-northeast-2.rds.amazonaws.com -p 5432 -U postgres -d postgres -t test.tab1 -v -Fc -f C:\pg_bak\tab1.dmp
반응형
3. table 복구
On-Prem : pg_restore -d {디비명} -Fc {백업파일명}
RDS : pg_restore -h {rds 주소} -p {포트번호} -U {유저명} -d {디비명} -Fc {백업파일명}
# -Fc(custom format)으로 백업받은 dump 파일 이용한 복구
pg_restore -h pgtest.cmg429ufp1c1.ap-northeast-2.rds.amazonaws.com -p 5432 -U postgres -d postgres -v -Fc C:\pg_bak\tab1.dmp
# -Fc(custom format)으로 백업받은 dump 파일에서 특정 테이블만 복구(스키마, 테이블 옵션 나눠짐 주의)
pg_restore -h pgtest.cmg429ufp1c1.ap-northeast-2.rds.amazonaws.com -U postgres -d postgres -v -Fc -n test -t tab1 C:\pg_bak\test.dmp
4. dump 파일에서 script 추출
# 백업파일 목록 확인
pg_restore -l C:\pg_bak\tab1.dmp
# 백업파일에서 text 형태의 DDL script 추출 : tab1.dmp 파일에서 test.ddl 로 스크립트 추출
pg_restore -s -f C:\pg_bak\test.ddl C:\pg_bak\tab1.dmp
# 백업파일에서 text 형태의 script 추출(DDL + DATA) : tab1.dmp 파일에서 test.ddl 로 스크립트 추출
pg_restore -f C:\pg_bak\test.ddl C:\pg_bak\tab1.dmp
'DBMS > PostgreSQL' 카테고리의 다른 글
[PostgreSQL] timescaledb extension 설치 (0) | 2023.11.15 |
---|---|
PostgreSQL 외부 접속 허용 설정 (0) | 2023.11.08 |
vacuum / vacuum full 의 차이 (0) | 2022.06.21 |
character varying 컬럼 타입 (0) | 2022.06.17 |
foreign table(oracle link) 조회 시 OCIEnvCreate failed 에러 발생 (0) | 2022.03.20 |
댓글