귀중한 데이터를 포함하는 모든 것과 마찬가지로토토데이터베이스를 토토해야합니다 정기적으로. 절차는 본질적으로 간단하지만 기본을 기본적으로 이해하는 것이 중요합니다 기술과 가정.
기본적으로 다른 후원 접근법이 있습니다 위로PostgreSQL데이터 :
SQL덤프
파일 시스템 수준 토토
온라인 토토
각각 고유 한 강점과 약점이 있습니다.
SQL-Dump 메소드의 아이디어는 텍스트를 생성하는 것입니다. SQL 명령이있는 파일은 서버로 Fed Back에있을 때 당시와 같은 상태로 데이터베이스를 재현 덤프의.PostgreSQL유틸리티 프로그램 제공pg_dump이 목적을 위해. 기본 사용 이 명령 중 :
pg_dumpdbname Outfile
보시다시피pg_dump쓰기 표준 출력에 대한 결과. 우리는 이것이 어떻게 이루어지는 지 볼 것입니다 유용 할 수 있습니다.
pg_dump일반PostgreSQL클라이언트 응용 프로그램 (특히 영리한 것이지만). 이것은 당신이 할 수 있음을 의미합니다 액세스 권한이있는 원격 호스트 의이 토토 절차 데이터베이스. 하지만 기억pg_dumpSpecial과 함께 작동하지 않습니다 권한. 특히, 모든 사람에 대한 액세스를 읽어야합니다 토토하고 싶은 테이블이므로 실제로는 거의 항상 데이터베이스 슈퍼 유저로 실행해야합니다.
데이터베이스 서버를 지정하려면pg_dump연락처를 사용하여 명령을 사용하십시오 라인 옵션-hhost및-p포트. 기본 호스트는입니다 현지 호스트 또는 당신의 것pghost환경 변수 지정. 마찬가지로 기본 포트는입니다 에 의해 표시됨pgport환경 컴파일 된 기본값에 의해 변수 또는 실패. (편리하게, 서버는 일반적으로 동일합니다 컴파일 된 기본값)
다른 것과 마찬가지로PostgreSQL클라이언트 응용 프로그램,pg_dump기본적으로 데이터베이스 사용자 이름과 연결 현재 운영 체제 사용자 이름과 동일합니다. 무시합니다 이것은를 지정합니다-u옵션 또는 환경 변수 설정PGUSER. 기억pg_dump연결은 일반 클라이언트 인증의 적용을받습니다 메커니즘 (19 장).
덤프 생성pg_dump는 내부적으로 일관성이 있습니다. 즉, 데이터베이스 업데이트입니다 하는 동안pg_dumpwill이 실행 중입니다 덤프에 있지 않습니다.pg_dump데이터베이스에서 다른 작업을 차단하지 않습니다. 일하고 있는. (예외는 작동 해야하는 작업입니다 와 같은 독점 잠금 장치진공 가득한.)
중요 :데이터베이스 스키마가 의존 할 때 OIDS (예 : 외국 키로) 지시해야합니다pg_dumpOID를 덤프합니다 또한. 이렇게하려면 사용하십시오.-o명령 줄 옵션."큰 사물"기본적으로 덤프되지 않습니다. 보다postgresql : 문서 : 8.0 : 토토 결과의 참조 페이지 if 당신은 큰 물체를 사용합니다.
텍스트 파일pg_dump그만큼PSQL프로그램. 그만큼 덤프를 복원하기위한 일반 명령 양식은
PSQLdbname < infile
여기서infile당신은 당신입니다 사용Outfile용pg_dump명령. 그만큼 데이터 베이스dbname이 명령에 의해 생성되면에서 직접 만들어야합니다.Template0실행 전PSQL(예 :createb -t template0dbname).PSQL유사한 옵션 지원pg_dump제어 용 데이터베이스 서버 위치 및 사용자 이름. 보다PSQL's 자세한 내용은 참조 페이지
대상 데이터베이스는 이미 이전에 존재해야 할뿐만 아니라 복원을 실행하기 시작했지만 모든 사용자도 덤프 된 데이터베이스에있는 자체 객체 또는 부여되었습니다 개체에 대한 권한. 그렇지 않으면 복원 원래 소유권으로 물체를 재현하지 못할 것입니다. 및/또는 권한. (때로는 이것이 당신이 원하는 것입니다 보통 그렇지 않습니다.)
일단 복원되면 실행하는 것이 현명합니다분석각 데이터베이스에서 Optimizer에는 유용한 통계가 있습니다. 이 작업을 수행하는 쉬운 방법은 달리다Vacuumdb -a -zto진공 분석모든 데이터베이스; 이것은 실행에 해당진공 분석수동으로.
의 능력pg_dumpandPSQL쓰기 또는 읽기 파이프에서 데이터베이스를 직접 덤프 할 수 있습니다. 하나의 서버에게 다른 서버; 예를 들어:
pg_dump -hhost1 dbname| psql -hhost2 dbname
중요 :덤프가 생산 한 덤프pg_dumpTemplate0. 이것은 모든 언어를 의미합니다. 절차 등이 추가Template1|pg_dump. 결과적으로, 복원시, 사용자 정의를 사용하는 경우Template1, 빈을 만들어야합니다 의 데이터베이스Template0위의 예.
다량의 데이터를로드하는 방법에 대한 조언PostgreSQL효율적으로, 참조스포츠 토토 : 문서 : 8.0 : 데이터베이스를 채워.
위의 메커니즘은 번거롭고 부적절합니다 전체 데이터베이스 클러스터를 토토합니다. 이런 이유로토토 PostgreSQL프로그램이 제공됩니다.pg_dumpall각각 백업 주어진 클러스터의 데이터베이스와 클러스터 전체를 보존합니다 사용자 및 그룹과 같은 데이터. 이것의 기본 사용 명령은 :
pg_dumpallOutfile
결과 덤프를 복원 할 수 있습니다PSQL:
PSQL -Finfiletemplate1
(실제로 기존 데이터베이스 이름을 지정할 수 있습니다 시작하지만 빈 클러스터에 다시로드되면template1유일하게 사용할 수 있습니다 선택.) 항상 데이터베이스 슈퍼 사용자가 있어야합니다 복원시 액세스pg_dumpall필요한 덤프 사용자 및 그룹 정보를 복원하십시오.
이후PostgreSQL허용 시스템의 최대 파일 크기보다 큰 테이블, It 그러한 테이블을 파일에 버리는 데 문제가있을 수 있습니다. 결과 파일은 최대 크기보다 클 수 있습니다. 귀하의 시스템에 의해 허용됩니다. 부터pg_dump표준에 쓸 수 있습니다 출력, 표준 유닉스 도구를 사용하여 작업을 수행 할 수 있습니다. 이 가능한 문제.
압축 덤프 사용.좋아하는 것을 사용할 수 있습니다 압축 프로그램, 예를 들어gzip.
pg_dumpdbname| gzipfilename.gz
Reload
createbdbnameGunzip -Cfilename.gz | PSQLdbname
또는
catfilename.gz | Gunzip | PSQLdbname
use분할.the분할명령을 사용하면 분할 할 수 있습니다 크기가 허용되는 조각으로의 출력은 기본 파일 시스템. 예를 들어, 1의 덩어리를 만듭니다 메가 바이트 :
pg_dumpdbname| 분할 -B 1M -filename
Reload
createbdbnamecatfilename* | PSQLdbname
사용자 정의 덤프 형식 사용.ifPostgreSQL와 함께 시스템을 구축했습니다 그만큼Zlib압축 라이브러리가 설치되어 있으면 사용자 정의 덤프 형식이 압축됩니다 데이터가 출력 파일에 쓰는 데이터입니다. 이것은 생산할 것입니다 덤프 파일 크기 사용과 유사한gzip이지만 이점이 추가되었습니다 테이블을 선택적으로 복원 할 수 있습니다. 다음 명령 사용자 정의 덤프 형식을 사용하여 데이터베이스를 덤프합니다.
pg_dump -fcdbname filename
사용자 정의 덤프는 스크립트가 아닙니다PSQL그러나 대신 복원해야합니다 와 함께PG_RESTORE. 참조postgresql : 문서 : 8.0 : 토토 결과andPG_RESTORE참조 페이지 세부.
후진 호환성의 이유로pg_dump큰 물체를 버리지 않습니다 기본.큰 덤프 사용자 정의 또는 타르 출력을 사용해야합니다. 형식 및 사용 사용-B옵션pg_dump. 참조pg_dump자세한 내용은 참조 페이지입니다. 그만큼 예배 규칙서contrib/pg_dumplo의PostgreSQL소스 트리 큰 물체를 버릴 수있는 프로그램이 포함되어 있습니다.
pg_dump참조 페이지.