이 문서는 지원되지 않는 PostgreSQL 버전에 대한 것입니다.
당신은 다음과 같은 페이지를 보고 싶을 수도 있습니다.PostgreSQL : 문서 : 17 : 25.1. SQL 토토 사이트 추천버전 또는 위에 나열된 다른 지원 버전 중 하나를 사용하세요.

24.1. SQL롤 토토

이 롤 토토 방법의 기본 아이디어는 텍스트 파일을 생성하는 것입니다 서버에 피드백되면 다음과 같은 SQL 명령이 사용됩니다. 데이터베이스를 당시와 동일한 상태로 다시 생성합니다. 롤 토토.포스트그레SQL제공 유틸리티 프로그램PostgreSQL : 문서 : 9.0 : 토토 베이용 이 목적. 이 명령의 기본 사용법은 다음과 같습니다.

pg_dumpdb이름  아웃파일

보시다시피,pg_dump쓰기 그 결과를 표준 출력으로 내보냅니다. 이것이 어떻게 가능한지 아래에서 살펴보겠습니다. 유용할 겁니다.

pg_dump단골입니다PostgreSQL클라이언트 애플리케이션 (특히 영리한 것이지만). 이것은 당신이 할 수 있다는 것을 의미합니다 다음이 있는 원격 호스트에서 이 백업 절차를 수행하십시오. 데이터베이스에 대한 액세스. 하지만 기억해두세요pg_dump특수 기능으로는 작동하지 않습니다 권한. 특히 모든 항목에 대한 읽기 액세스 권한이 있어야 합니다. 백업하려는 테이블이 있으므로 실제로는 거의 항상 데이터베이스 슈퍼유저로 실행해야 합니다.

어떤 데이터베이스 서버를 지정하려면pg_dump연락해야 합니다. 명령줄을 사용하세요. 옵션-h호스트그리고-p포트. 기본 호스트는 다음과 같습니다. 로컬 호스트든 무엇이든 상관없습니다PGHOST환경 변수가 지정합니다. 마찬가지로 기본 포트는 다음과 같습니다. 로 표시됨PGPORT환경 변수이거나, 실패할 경우 컴파일된 기본값에 따라 결정됩니다. (편리하게도 서버는 일반적으로 동일한 컴파일된 파일을 갖습니다. 기본값.)

다른 것과 마찬가지로포스트그레SQL클라이언트 애플리케이션,pg_dump할 것이다 기본적으로 다음과 같은 데이터베이스 사용자 이름으로 연결합니다. 현재 운영 체제 사용자 이름입니다. 이를 재정의하려면 다음 중 하나를 수행하세요. 지정하다-U옵션을 설정하거나 환경 변수PGUSER. 기억해두세요pg_dump연결이 주제입니다. 일반적인 클라이언트 인증 메커니즘( 설명됨토토 사이트 : 문서 : 9.0 : 클라이언트 인증).

중요한 이점pg_dump다른 백업 방법보다 나중에 설명하겠습니다.pg_dump의 출력은 일반적으로 다시 로드될 수 있습니다. 최신 버전으로PostgreSQL, 반면 파일 수준 백업 및 지속적인 보관은 둘 다 서버 버전에 따라 매우 다릅니다.pg_dump또한 유일한 방법입니다 데이터베이스를 다른 데이터베이스로 전송할 때 작동합니다. 32비트에서 64비트로의 전환과 같은 머신 아키텍처 서버.

다음에 의해 생성된 롤 토토pg_dump있습니다 내부적으로 일관성이 있습니다. 즉, 롤 토토는 다음의 스냅샷을 나타냅니다. 당시 데이터베이스pg_dump실행을 시작했습니다.pg_dump하지 않습니다 작동하는 동안 데이터베이스에서 다른 작업을 차단합니다. (예외는 다음과 같이 작동해야 하는 작업입니다. 대부분의 형태와 같은 배타적 잠금변경 표.)

중요:데이터베이스 스키마가 OID에 의존하는 경우 (예를 들어 외래 키로) 지시해야 합니다.pg_dumpOID를 다음과 같이 롤 토토합니다. 음. 이렇게 하려면 다음을 사용하세요.-o명령줄 옵션.

24.1.1. 롤 토토 복원 중

다음에 의해 생성된 텍스트 파일pg_dump다음에서 읽을 수 있도록 의도되었습니다.psql프로그램. 장군 롤 토토를 복원하는 명령 형식은 다음과 같습니다.

psqldb이름 < 파일

어디에서파일파일입니다 에 의해 출력됨pg_dump명령. 데이터베이스db이름않을 것입니다 이 명령으로 생성되므로 다음에서 직접 생성해야 합니다.템플릿0실행 전psql(예: 와createdb -T template0DB이름). psql다음과 유사한 옵션을 지원합니다pg_dump지정용 연결할 데이터베이스 서버와 사용할 사용자 이름입니다. 참조psql자세한 내용은 참조 페이지 정보.

SQL 롤 토토를 복원하기 전에 객체를 소유한 모든 사용자는 또는 롤 토토된 데이터베이스의 개체에 대한 권한이 부여되었습니다. 이미 존재해야 합니다. 그렇지 않으면 복원이 실패합니다. 원래 소유권으로 객체를 다시 생성하거나 권한. (때로는 이것이 당신이 원하는 것이지만, 일반적으로 그것은 그렇지 않습니다.)

기본적으로는psql스크립트 SQL 오류가 발생한 후에도 계속 실행됩니다. 당신 실행하고 싶을 수도 있음psql와 함께ON_ERROR_STOP변수가 다음으로 설정됨 그 행동을 바꾸고psql다음의 경우 종료 상태 3으로 종료합니다. SQL 오류가 발생했습니다:

psql --set ON_ERROR_STOP=DB 이름 < 파일

어느 쪽이든 부분적으로만 복원됩니다. 데이터베이스. 또는 전체 롤 토토가 단일 트랜잭션으로 복원해야 하므로 복원은 완전히 완료되었거나 완전히 롤백되었습니다. 이 모드는 다음과 같습니다. 를 전달하여 지정됨-1또는--단일 트랜잭션명령줄 옵션psql. 사용시 이 모드에서는 사소한 오류라도 롤백될 수 있다는 점에 유의하세요. 이미 여러 시간 동안 실행된 복원입니다. 그러나 그 컴플렉스를 수동으로 정리하는 것보다 여전히 더 나을 수도 있습니다. 부분적으로 복원된 롤 토토 이후의 데이터베이스입니다.

의 능력pg_dump그리고psql쓰거나 읽다 파이프를 사용하면 데이터베이스를 직접 롤 토토할 수 있습니다. 서버를 다른 서버로 전송합니다. 예를 들면 다음과 같습니다.

pg_dump -h호스트1 db이름| psql -h호스트2 db이름

중요:다음에 의해 생성된 롤 토토pg_dump다음에 상대적임템플릿0. 이는 어떤 언어든, 절차 등을 통해 추가됨템플릿1또한 버릴 것입니다pg_dump. 결과적으로 언제 복원, 사용자 정의를 사용하는 경우템플릿1, 빈 공간을 만들어야 합니다. 데이터베이스의 출처템플릿0에서와 같이 위의 예입니다.

백업을 복원한 후 실행하는 것이 좋습니다.분석각 데이터베이스에 있으므로 쿼리는 최적화 프로그램에는 유용한 통계가 있습니다. 참조섹션 23.1.3그리고섹션 23.1.5더 보기 정보. 많은 양의 파일을 로드하는 방법에 대한 자세한 조언은 데이터를PostgreSQL효율적으로, 참조PostgreSQL :.

24.1.2. 사용pg_dumpall

pg_dump단 하나의 롤 토토만 롤 토토합니다. 데이터베이스에 대한 정보를 롤 토토하지 않습니다. 역할 또는 테이블스페이스(클러스터 전체에 적용되기 때문) 데이터베이스별보다). 전체의 편리한 투기를 지원하기 위해 데이터베이스 클러스터의 콘텐츠,pg_dumpall프로그램이 제공됩니다.pg_dumpall각각 백업 특정 클러스터의 데이터베이스를 유지하고 클러스터 전체에도 보존합니다. 역할 및 테이블스페이스 정의와 같은 데이터. 기본 사용법 이 명령의 내용은 다음과 같습니다.

pg_dumpall 아웃파일

결과 롤 토토는 다음을 사용하여 복원할 수 있습니다.psql:

psql -f파일포스트그레스

(실제로 기존 데이터베이스 이름을 지정할 수 있습니다. 시작하지만 빈 클러스터에 로드하는 경우포스트그레스일반적으로 사용되어야 합니다.) 다음과 같은 경우 데이터베이스 수퍼유저 액세스 권한이 항상 필요합니다. 복원 중pg_dumpall롤 토토, 이는 역할과 테이블스페이스를 복원하는 데 필요하기 때문입니다. 정보. 테이블스페이스를 사용하는 경우 다음 사항을 확인하세요. 롤 토토의 테이블스페이스 경로가 새 테이블스페이스에 적합합니다. 설치.

pg_dumpall작성자: 역할, 테이블스페이스 및 비어 있는 항목을 다시 생성하는 명령 내보내기 데이터베이스를 호출한 다음pg_dump각 데이터베이스에 대해. 이는 다음을 의미합니다. 각 데이터베이스는 내부적으로 일관성이 있지만 다른 데이터베이스의 스냅샷은 정확하지 않을 수 있습니다. 동기화 중입니다.

24.1.3. 대규모 데이터베이스 처리

일부 운영 체제에는 최대 파일 크기 제한이 있습니다. 큰 생성 시 문제가 발생함pg_dump출력 파일. 다행히도,pg_dump다음에 쓸 수 있습니다. 표준 출력이므로 표준 Unix 도구를 사용하여 작업할 수 있습니다. 이 잠재적인 문제를 둘러보세요. 여러 가지가 가능하다 방법:

압축 롤 토토를 사용하세요.당신이 좋아하는 것을 사용할 수 있습니다 예를 들어 압축 프로그램gzip:

pg_dumpdb이름| 압축파일 이름.gz

다음으로 새로고침:

gunzip -c파일 이름.gz | psqldb이름

또는:

고양이파일 이름.gz | 총집합 | psqldb이름

사용분할.분할명령을 사용하면 출력을 분할할 수 있습니다. 크기가 허용되는 더 작은 파일로 기본 파일 시스템. 예를 들어 1개의 덩어리를 만들려면 메가바이트:

pg_dumpdb이름| 분할 -b 1m -파일 이름

다음으로 새로고침:

고양이파일 이름* | psqldb이름

사용pg_dump의 관습 롤 토토 형식.만약포스트그레SQL다음 시스템을 기반으로 구축되었습니다.zlib압축 라이브러리 설치하면 사용자 정의 롤 토토 형식이 데이터를 압축합니다. 출력 파일에 씁니다. 그러면 롤 토토 파일이 생성됩니다. 사용하는 것과 유사한 크기gzip하지만 그건 테이블을 복원할 수 있다는 추가 이점이 있습니다. 선택적으로. 다음 명령은 다음을 사용하여 데이터베이스를 롤 토토합니다. 사용자 정의 롤 토토 형식:

pg_dump -Fcdb이름  파일 이름

사용자 정의 형식 롤 토토는 다음을 위한 스크립트가 아닙니다.psql, 대신에를 사용하여 복원해야 합니다.pg_restore, 예:

pg_restore -ddb이름 파일 이름

참조PostgreSQL : 문서 : 9.0 : 토토 베이그리고pg_restore참조 페이지 세부사항.

매우 큰 데이터베이스의 경우 결합이 필요할 수 있습니다.분할다른 둘 중 하나와 함께 접근합니다.