백업과 복구
백업
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