2017-04-25 16 views
2

두 개의 호스트 서버 s1 및 s2가 있다고 가정 해보십시오. 두 서버 모두에서 n1이라는 스키마가 있습니다. 이제는 s1의 스키마 n1에있는 테이블 중 일부에 몇 가지 변경 사항을 적용했습니다. 나는 서버 s2의 스키마 n1에 대해 동일한 변경을 원한다. 내가 뭘하려고 계획은 pg_dump를 사용하여 서버 s1의 스키마 n1을 백업하고 pg_restore를 사용하여 서버 s2에서 복원하는 것입니다. 이제 내 질문은, 같은 테이블 집합을 가진 서버 s2에 이미 동일한 스키마 n1이 있기 때문입니다. 복원 프로세스가 수행 할 작업은 무엇입니까? 기존 테이블을 덮어 쓰거나 서버 s2의 기존 스키마를 삭제하고 서버 s1의 덤프를 사용하여 복원해야합니까?pg_restore가 기존 테이블을 덮어 씁니까?

+0

복원 전에 개체를 삭제하려면 pg_resotre의 --clean 옵션을 사용해보십시오. https://www.postgresql.org/docs/current/static/app-pgrestore.html – Jayadevan

답변

6

--clean 옵션을 사용하면 새 테이블을 만들기 전에 이전 테이블이 삭제됩니다.

당신이 --clean 옵션을 사용하지 않는 경우, 테이블이 이미 존재하는 오류 메시지가 표시됩니다,하지만 당신은 --exit-on-error 옵션을 사용하지 않으면 pg_restore 처리를 계속합니다.

+0

--clean 옵션은 이미있는 테이블 만 삭제합니다. 또는 모든 테이블이 존재합니까? 만약 기존의 스키마에 추가 테이블을 가지고 있다고 가정한다면 그것은 그대로 유지 될 것입니다. – Karthik

+1

복원하려고하는 테이블 만 삭제합니다. 다른 테이블은 그대로 남습니다. 너의 도움을 위해 –

+0

고마워. :) – Karthik