가치 있는 데이터가 포함된 모든 것과 마찬가지로,포스트그레SQL데이터베이스를 토토해야 합니다 정기적으로. 절차는 본질적으로 간단하지만, 기본적인 내용을 이해하는 것이 중요합니다 기술 및 가정.
지원에는 근본적으로 다른 세 가지 접근 방식이 있습니다. 위로PostgreSQL데이터:
SQL덤프
파일 시스템 수준 토토
온라인 토토
각각에는 고유한 장점과 단점이 있습니다.
SQL-dump 방법의 기본 아이디어는 텍스트를 생성하는 것입니다. 서버에 피드백될 때 SQL 명령이 포함된 파일 당시와 동일한 상태로 데이터베이스를 다시 생성합니다. 덤프의.포스트그레SQL유틸리티 프로그램 제공pg_dump이 목적을 위해. 기본 사용법 이 명령의 내용은 다음과 같습니다.
pg_dumpdb이름 아웃파일
보시다시피,pg_dump쓰기 그 결과를 표준 출력으로 출력합니다. 아래에서 이것이 어떻게 이루어지는지 살펴보겠습니다. 유용할 수 있습니다.
pg_dump단골입니다PostgreSQL클라이언트 애플리케이션 (특히 영리한 것이지만). 이것은 당신이 할 수 있다는 것을 의미합니다 액세스 권한이 있는 모든 원격 호스트에서 이 토토 절차를 수행합니다. 데이터베이스. 하지만 기억해두세요pg_dump특수 기능으로는 작동하지 않습니다 권한. 특히 모든 항목에 대한 읽기 액세스 권한이 있어야 합니다. 토토하려는 테이블이 있으므로 실제로는 거의 항상 데이터베이스 수퍼유저로 실행해야 합니다.
어떤 데이터베이스 서버를 지정하려면pg_dump연락해야 합니다. 다음 명령을 사용하세요. 라인 옵션-h호스트그리고-p포트. 기본 호스트는 다음과 같습니다. 로컬 호스트든 무엇이든 상관없습니다PGHOST환경 변수가 지정합니다. 마찬가지로 기본 포트는 다음과 같습니다. 로 표시됨PGPORT환경 변수이거나, 실패할 경우 컴파일된 기본값에 따라 결정됩니다. (편리하게도 서버에는 일반적으로 동일한 컴파일된 기본값입니다.)
다른 것과 마찬가지로PostgreSQL클라이언트 애플리케이션,pg_dump기본적으로 데이터베이스 사용자 이름으로 연결됩니다. 현재 운영 체제 사용자 이름과 동일합니다. 재정의하려면 이는 다음 중 하나를 지정합니다.-U옵션 또는 환경 변수 설정PGUSER. 기억해두세요pg_dump연결에는 일반 클라이언트 인증이 적용됩니다 메커니즘(설명됨)제19장).
다음에 의해 생성된 덤프pg_dump내부적으로 일관성이 있습니다. 즉, 데이터베이스 업데이트입니다. 하는 동안pg_dump실행 중입니다. 쓰레기장에 있지 마세요.pg_dump데이터베이스가 작동하는 동안에는 데이터베이스의 다른 작업을 차단하지 않습니다. 일하고 있는. (예외적으로 작동해야 하는 작업은 다음과 같은 배타적 잠금을 사용합니다.진공 가득한.)
중요:귀하의 데이터베이스 스키마가 다음에 의존하는 경우 OID(예: 외래 키)를 지시해야 합니다.pg_dumpOID 덤프 또한. 이렇게 하려면 다음을 사용하세요.-o명령줄 옵션."대형 사물"또한 기본적으로 덤프되지 않습니다. 보다postgresql : 문서 : 8.0 : 토토 결과의 참조 페이지 당신은 큰 물체를 사용합니다.
다음에 의해 생성된 텍스트 파일pg_dump다음 사용자가 읽을 수 있도록 의도되었습니다. 그만큼psql프로그램. 그만큼 덤프를 복원하는 일반적인 명령 형식은 다음과 같습니다.
psqldb이름 < 파일
어디에서파일당신은 무엇입니까 다음과 같이 사용됨아웃파일에 대한pg_dump명령. 그만큼 데이터 베이스db이름않을 것입니다 이 명령으로 생성된 경우 다음에서 직접 생성해야 합니다.템플릿0실행 전psql(예: 와createdb -T template0db이름). psql다음과 유사한 옵션을 지원합니다pg_dump제어용 데이터베이스 서버 위치 및 사용자 이름. 보다psql의 자세한 내용은 참조 페이지를 참조하세요.
대상 데이터베이스가 이전에 이미 존재해야 할 뿐만 아니라 복원 실행을 시작하지만 복원을 수행하는 모든 사용자도 마찬가지입니다. 덤프된 데이터베이스에 있는 개체를 소유하거나 권한을 부여받았습니다. 객체에 대한 권한. 그렇지 않으면 복원이 수행됩니다. 원래 소유권으로 객체를 다시 생성하지 못합니다. 및/또는 권한. (때로는 이것이 당신이 원하는 것이지만, 일반적으로 그렇지 않습니다.)
복구되면 실행하는 것이 현명합니다.분석각 데이터베이스에 있으므로 최적화 프로그램에는 유용한 통계가 있습니다. 이를 수행하는 쉬운 방법은 다음과 같습니다. 달리다vacuumdb -a -z에진공 분석모든 데이터베이스; 이것은 달리기와 동일진공 분석수동으로.
의 능력pg_dump그리고psql글을 쓰거나 읽다 파이프를 사용하면 데이터베이스를 직접 덤프할 수 있습니다. 한 서버에서 다른 서버로; 예를 들어:
pg_dump -h호스트1 db이름| psql -h호스트2 db이름
중요:다음에 의해 생성된 덤프pg_dump다음에 상대적임템플릿0. 이는 어떤 언어든, 절차 등이 추가됨템플릿1또한 버릴 것입니다pg_dump. 결과적으로, 복원할 때 사용자 정의를 사용하는 경우템플릿1, 비어 있는 항목을 생성해야 합니다. 데이터베이스의 출처템플릿0에서와 같이 위의 예입니다.
대량의 데이터를 로드하는 방법에 대한 조언포스트그레SQL효율적으로, 참조스포츠 토토 : 문서 : 8.0 : 데이터베이스를 채워.
위의 메커니즘은 다음과 같은 경우에는 번거롭고 부적절합니다. 전체 데이터베이스 클러스터 백업. 이러한 이유로토토 PostgreSQL프로그램이 제공됩니다.pg_dumpall각각 백업 특정 클러스터의 데이터베이스를 유지하고 클러스터 전체에도 보존합니다. 사용자, 그룹 등의 데이터. 이것의 기본 사용법 명령은 다음과 같습니다:
pg_dumpall 아웃파일
결과 덤프는 다음을 통해 복원할 수 있습니다.psql:
psql -f파일템플릿1
(실제로 기존 데이터베이스 이름을 지정할 수 있습니다. 시작하지만 빈 클러스터에 다시 로드하는 경우템플릿1유일하게 사용 가능한 선택.) 항상 데이터베이스 수퍼유저가 필요합니다. 복원 시 액세스 apg_dumpall덤프(이것이 필요하므로) 사용자 및 그룹 정보를 복원합니다.
이후포스트그레SQL허용합니다 시스템의 최대 파일 크기보다 큰 테이블 그러한 테이블을 파일로 덤프하는 것은 문제가 될 수 있습니다. 결과 파일은 최대 크기보다 클 가능성이 높습니다. 귀하의 시스템에서 허용됩니다. 부터pg_dump표준에 쓸 수 있음 출력이 발생하면 표준 Unix 도구를 사용하여 문제를 해결할 수 있습니다. 이 문제가 발생할 수 있습니다.
압축 덤프를 사용하세요.당신이 좋아하는 것을 사용할 수 있습니다 예를 들어 압축 프로그램gzip.
pg_dumpdb이름| 압축파일 이름.gz
다음으로 새로고침
생성된 DBdb이름gunzip -c파일 이름.gz | psqldb이름
또는
고양이파일 이름.gz | 총집합 | psqldb이름
사용분할.그분할명령을 사용하면 분할할 수 있습니다. 크기가 허용 가능한 조각으로 출력됩니다. 기본 파일 시스템. 예를 들어 1개의 덩어리를 만들려면 메가바이트:
pg_dumpdb이름| 분할 -b 1m -파일 이름
다음으로 새로고침
생성된 DBdb이름고양이파일 이름* | psqldb이름
사용자 정의 덤프 형식을 사용하십시오.만약PostgreSQL다음 시스템을 기반으로 구축되었습니다. 그만큼zlib압축 라이브러리가 설치되면 사용자 정의 덤프 형식이 압축됩니다. 출력 파일에 데이터를 기록합니다. 이것은 생산할 것입니다 사용하는 것과 유사한 덤프 파일 크기gzip, 하지만 다음과 같은 추가 이점이 있습니다. 테이블을 선택적으로 복원할 수 있습니다. 다음 명령 사용자 정의 덤프 형식을 사용하여 데이터베이스를 덤프합니다.
pg_dump -Fcdb이름 파일 이름
사용자 정의 형식 덤프는 다음을 위한 스크립트가 아닙니다.psql, 대신 복원해야 함 와 함께pg_restore. 참조postgresql : 문서 : 8.0 : 토토 결과그리고pg_restore참조 페이지 세부.
이전 버전과의 호환성 때문에,pg_dump대형 개체를 덤프하지 않습니다. 기본.대형 덤프하려면 사용자 정의 또는 tar 출력을 사용해야 하는 객체 형식을 지정하고-b옵션 포함pg_dump. 참조pg_dump25064_25115contrib/pg_dumplo의PostgreSQL소스 트리도 큰 개체를 덤프할 수 있는 프로그램이 포함되어 있습니다.
다음 사항을 숙지하시기 바랍니다pg_dump참조 페이지.