Postgresql 9.0.23 문서화 | ||||
---|---|---|---|---|
PostgreSQL : 문서 : 9.0 : 범퍼카 토토 및 복원 | up | 24 장. 백업 및 복원 | PostgreSQL : 문서 : 9.0 : 토토 캔 시스템 수준 백업 |
이 롤 토토 방법의 아이디어는 텍스트 파일을 생성하는 것입니다. SQL 명령을 사용하면 서버로 Fed Back이 당시와 같은 상태로 데이터베이스를 재현하십시오. 롤 토토.PostgreSQL제공 유틸리티 프로그램PostgreSQL : 문서 : 9.0 : 토토 베이이 목적. 이 명령의 기본 사용은 다음과 같습니다.
pg_dumpdbname Outfile
보시다시피pg_dump쓰기 표준 출력에 대한 결과. 우리는 이것이 어떻게 할 수 있는지 아래를 보게 될 것입니다 유용합니다.
pg_dump일반postgresql클라이언트 응용 프로그램 (특히 영리한 것이지만). 이것은 당신이 할 수 있음을 의미합니다 이 백업 절차를 수행 한 원격 호스트에서 데이터베이스에 대한 액세스. 하지만 기억pg_dumpSpecial과 함께 작동하지 않습니다 권한. 특히, 모든 사람에 대한 액세스를 읽어야합니다 백업하고 싶은 테이블이므로 실제로 거의 항상 데이터베이스 슈퍼 유저로 실행해야합니다.
데이터베이스 서버를 지정하려면pg_dump연락처로 명령 줄을 사용하십시오 옵션-hhostand-p포트. 기본 호스트는입니다 현지 호스트 또는 당신의 것pghost환경 변수를 지정합니다. 마찬가지로 기본 포트는입니다 에 의해 표시됨pgport환경 컴파일 된 기본값에 의해 변수 또는 실패. (편리하게, 서버는 일반적으로 동일한 컴파일이 있습니다 기본.)
다른 것과 마찬가지로PostgreSQL클라이언트 응용 프로그램,pg_dump의지 기본적으로 데이터베이스 사용자 이름과 연결 현재 운영 체제 사용자 이름. 이것을 무시합니다 지정-u옵션 또는 설정을 설정합니다 환경 변수PGUSER. 기억pg_dump연결은 주제입니다 일반 클라이언트 인증 메커니즘 ( 설명토토 사이트 : 문서 : 9.0 : 클라이언트 인증).
중요한 이점pg_dump다른 백업 방법에 대한 나중에 설명 된pg_dump의 출력은 일반적으로 다시로드 될 수 있습니다 최신 버전의PostgreSQL, 파일 레벨 백업 및 연속 아카이브는 서버-버전 특정입니다.pg_dump도 유일한 방법입니다 데이터베이스를 다른 것으로 전송할 때 작동합니다. 32 비트에서 64 비트로가는 것과 같은 기계 아키텍처 섬기는 사람.
롤 토토 생성pg_dump내부적으로 일관성, 즉, 롤 토토는 스냅 샷을 나타냅니다 당시 데이터베이스pg_dump달리기 시작.pg_dump그렇지 않습니다 데이터베이스가 작동하는 동안 다른 작업을 차단하십시오. (예외는 대부분의 형태와 같은 독점 잠금ALTER 테이블.)
중요 :데이터베이스 스키마가 OID에 의존하는 경우 (예를 들어, 외국 열쇠로서) 지시해야합니다pg_dumpOID를 롤 토토합니다 잘. 이렇게하려면 사용하십시오.-o명령 줄 옵션.
텍스트 파일pg_dumpPSQL프로그램. 장군 롤 토토를 복원하기위한 명령 양식은
PSQLdbname < infile
여기서infile는 파일입니다 출력pg_dump명령. 데이터베이스dbname이 명령에 의해 생성되었으므로에서 직접 만들어야합니다.Template0실행 전PSQL(예 :createb -t template0dbname).PSQL유사한 옵션 지원pg_dump연결할 데이터베이스 서버 및 사용할 사용자 이름. 참조PSQL자세한 내용은 참조 페이지 정보.
SQL 롤 토토를 복원하기 전에 객체를 소유 한 모든 사용자 또는 덤핑 된 데이터베이스의 개체에 대한 권한이 부여되었습니다. 이미 존재해야합니다. 그렇지 않으면 복원이 실패합니다 원래 소유권 및/또는로 개체를 재현하십시오 권한. (때로는 이것은 당신이 원하는 것이지만 보통 그렇지 않습니다.)
기본적으로PSQL스크립트 SQL 오류가 발생한 후에도 계속 실행됩니다. 너 실행을 원할 수도 있습니다PSQL그만큼on_error_stop변수 설정 그 행동을 바꾸고PSQLan SQL 오류가 발생합니다 :
psql -set on_error_stop = on dbname <infile
어느 쪽이든, 당신은 부분적으로 만 복원됩니다 데이터 베이스. 또는 전체 롤 토토를 지정할 수 있습니다 단일 트랜잭션으로 복원해야하므로 복원은 완전히 완성되거나 완전히 롤백되었습니다. 이 모드는 될 수 있습니다 통과하여 지정-1또는--- 단일 전환명령 줄 옵션PSQL. 사용시 이 모드에서는 사소한 오류조차도 롤백 할 수 있습니다. 이미 몇 시간 동안 실행 된 복원. 그러나 그건 복잡한 수동으로 청소하는 것이 여전히 바람직 할 수 있습니다. 부분적으로 복원 된 롤 토토 후 데이터베이스.
의 능력pg_dumpandPSQL쓰기 또는 읽기 파이프는 하나에서 데이터베이스를 직접 버릴 수 있습니다. 예를 들어 다른 사람에게 서버 :
pg_dump -hhost1 dbname| psql -hhost2 dbname
중요 :롤 토토가 생성 된 롤 토토pg_dumpTemplate0. 이것은 모든 언어를 의미합니다. 절차 등을 통해 추가Template1|pg_dump. 결과적으로 언제 복원, 사용자 정의를 사용하는 경우template1, 빈을 만들어야합니다 의 데이터베이스Template0에서와 같이 위의 예.
백업을 복원 한 후 실행하는 것이 좋습니다분석각 데이터베이스에서 쿼리 Optimizer에는 유용한 통계가 있습니다. 보다섹션 23.1.3and섹션 23.1.5더 많은 것 정보. 많은 양을로드하는 방법에 대한 더 많은 조언은 데이터로의 데이터PostgreSQL효율적으로 참조PostgreSQL :.
pg_dump단 하나만 롤 토토합니다 한 번에 데이터베이스에 대한 정보를 롤 토토하지 않습니다. 역할 또는 테이블 스페이스 (클러스터 전체가 오히려 클러스터이기 때문에 다가베이스 당보다). 전체의 편리한 덤핑을 지원합니다 데이터베이스 클러스터의 내용,pg_dumpall프로그램이 제공됩니다.pg_dumpall각각 백업 주어진 클러스터의 데이터베이스와 클러스터 전체를 보존합니다 역할 및 테이블 스페이스 정의와 같은 데이터. 기본 사용 이 명령 중 :
pg_dumpallOutfile
결과 롤 토토를 복원 할 수 있습니다PSQL:
PSQL -FinfilePostgres
(실제로 기존 데이터베이스 이름을 지정할 수 있습니다 시작하지만 빈 클러스터에로드하면Postgres보통 사용해야합니다.) 때 데이터베이스 슈퍼 사용자가 액세스 할 때 항상 필요합니다 a 복원pg_dumpall롤 토토, 역할과 테이블 스페이스를 복원하는 데 필요한 정보. 테이블 스페이스를 사용하는 경우 롤 토토의 테이블 스페이스 경로는 새로 적합합니다. 설치.
pg_dumpall역할, 테이블 스페이스 및 비어있는 명령을 방출합니다 데이터베이스, 그런 다음 호출pg_dump각 데이터베이스. 이것은 그것을 의미합니다 각 데이터베이스는 내부적으로 일관되지만 다른 데이터베이스의 스냅 샷은 정확히 그렇지 않을 수 있습니다 동기화.
일부 운영 체제에는 최대 파일 크기 제한이 있습니다 큰 생성 할 때 문제를 일으 킵니다pg_dump출력 파일. 다행스럽게도,pg_dump표준 출력이므로 표준 유닉스 도구를 사용하여 작동 할 수 있습니다. 이 잠재적 인 문제를 중심으로. 가능한 몇 가지가 있습니다 행동 양식:
압축 롤 토토 사용.좋아하는 것을 사용할 수 있습니다 압축 프로그램, 예를 들어gzip:
pg_dumpdbname| gzipfilename.gz
다시로드 :
Gunzip -Cfilename.gz | PSQLdbname
또는 :
catfilename.gz | Gunzip | PSQLdbname
use분할.the분할명령을 사용하면 출력을 분할 할 수 있습니다 크기가 허용되는 작은 파일로 기본 파일 시스템. 예를 들어, 1의 덩어리를 만듭니다 메가 바이트 :
pg_dumpdbname| 분할 -B 1M -filename
다시로드 :
catfilename* | PSQLdbname
usepg_dump의 사용자 정의 롤 토토 형식.ifPostgreSQL와 함께 시스템을 구축했습니다 그만큼Zlib압축 라이브러리 설치, 사용자 정의 롤 토토 형식은 데이터와 같이 데이터를 압축합니다. 출력 파일에 씁니다. 이것은 롤 토토 파일을 생성합니다 사용과 유사한 크기gzip, 그러나 그것은 테이블을 복원 할 수 있다는 추가 이점이 있습니다 선택적으로. 다음 명령은 다음을 사용하여 데이터베이스를 롤 토토합니다 사용자 정의 롤 토토 형식 :
pg_dump -fcdbname filename
사용자 정의 롤 토토는 스크립트가 아닙니다PSQL, 그러나 대신 복원해야합니다PG_RESTORE, 예 :
PG_RESTORE -Ddbname filename
참조PostgreSQL : 문서 : 9.0 : 토토 베이andPG_RESTORE참조 페이지 세부.
매우 큰 데이터베이스의 경우 결합해야 할 수도 있습니다분할다른 두 가지 중 하나와 함께 구혼.