02. 백업과 복구

백업과 복구

백업

sudo -u postgres pg_dump -Fp 데이터베이스 > 파일.sql

복구

sudo -u postgres psql -d 신규_빈_데이터베이스 -f 파일1.sql

문제 해결

존재하지 않는 role 오류

시퀀스를 만들 때 백업 데이터베이스에 있었던 기존 role이 존재하지 않는다고 하는 경우 새 데이터베이스에서도 동일한 이름을 role을 만들어준다.

만약 role을 변경하고 싶으면 새 데이터베이스에 있는 알맞는 role 이름으로 덤프 파일에서 직접 수정한다.

데이터베이스에서 테이블 전체 삭제

잘못 복구했을 때 데이터베이스 전체를 삭제하고 다시 복구하는 방법이 있겠지만 테이블 모두 삭제하고 다시 복구하고자 하는 경우이다.

아래 명령어로 public 스키마의 모든 테이블 및 함수, 뷰, 시퀀스 등을 모두 삭제한다.

DROP SCHEMA public CASCADE;
CREATE SCHEMA public;

9.3 이상 버전에서는 기본 GRANT 옵션을 복구해야할 수도 있다.

GRANT ALL ON SCHEMA public TO postgres;
GRANT ALL ON SCHEMA public TO public;

AS integer 오류

10.x 버전에서 AS integer는 10.x 버전에서도 도입되었고 하위호환되지 않는다.

만약 10.x 버전의 데이터베이스를 백업할 경우에는 이 줄을 지워줘야 한다.

sudo -u postgres pg_dump -Fp 데이터베이스 > 파일.sql
sed 's/AS integer//' dump.sql > dump1.sql
sudo -u postgres psql -d 신규_빈_데이터베이스 -f 파일1.sql

최종 수정일시: 2019-06-03 01:06

blog comments powered by Disqus