이 문서는 지원되지 않는 PostgreSQL 버전에 대한 것입니다.
당신은 다음과 같은 페이지를 보고 싶을 수도 있습니다.토토 캔 PostgreSQL : 문서 : 17 : 25.3. 연속 보관 및 시점 복구 (PITR)버전 또는 위에 나열된 다른 지원 버전 중 하나를 사용하세요.

25.3. 지속적인 보관 및 특정 시점 복구(PITR)

항상,PostgreSQL유지관리미리 로그 작성(WAL)에서pg_wal/클러스터 데이터 디렉토리의 하위 디렉토리. 로그는 데이터베이스 데이터 파일에 대한 모든 변경 사항을 기록합니다. 이 로그는 주로 충돌 방지 목적으로 존재합니다. 시스템이 충돌하는 경우 다음을 통해 데이터베이스를 일관성으로 복원할 수 있습니다.재생 중마지막 체크포인트 이후 만들어진 로그 항목입니다. 그러나 로그가 있으면 데이터베이스 백업을 위한 세 번째 전략을 사용할 수 있습니다. 즉, 파일 시스템 수준 백업과 WAL 파일 백업을 결합할 수 있습니다. 복구가 필요한 경우 파일 시스템 백업을 복원한 다음 백업된 WAL 파일을 재생하여 시스템을 현재 상태로 만듭니다. 이 접근 방식은 이전 접근 방식보다 관리하기가 더 복잡하지만 몇 가지 중요한 이점이 있습니다.

  • 우리는 시작점으로 완벽하게 일관된 윈 토토 시스템 백업이 필요하지 않습니다. 백업의 내부 불일치는 로그 재생을 통해 수정됩니다(이는 충돌 복구 중에 발생하는 것과 크게 다르지 않습니다). 따라서 윈 토토 시스템 스냅샷 기능은 필요하지 않습니다.타르또는 유사한 보관 도구.

  • 재생을 위해 무기한 긴 WAL 윈 토토 시퀀스를 결합할 수 있으므로 WAL 윈 토토을 계속 아카이브하는 것만으로 연속 백업을 달성할 수 있습니다. 이는 전체 백업을 자주 수행하는 것이 편리하지 않은 대규모 데이터베이스에 특히 유용합니다.

  • WAL 항목을 끝까지 재생할 필요는 없습니다. 우리는 언제든지 재생을 중지하고 그 당시와 마찬가지로 데이터베이스의 일관된 스냅샷을 가질 수 있습니다. 따라서 이 기술은 다음을 지원합니다.특정 시점 복구: 기본 백업이 수행된 이후 언제든지 데이터베이스를 해당 상태로 복원할 수 있습니다.

  • 동일한 기본 백업 파일이 로드된 다른 시스템에 일련의 WAL 파일을 지속적으로 공급하면 다음과 같은 결과가 발생합니다.따뜻한 대기시스템: 언제든지 두 번째 시스템을 가동할 수 있으며 이는 거의 최신 데이터베이스 복사본을 갖게 됩니다.

참고

pg_dump그리고pg_dumpall윈 토토 시스템 수준 백업을 생성하지 않으며 연속 아카이브 솔루션의 일부로 사용할 수 없습니다. 이러한 덤프는논리적WAL 재생에서 사용할 정보가 충분하지 않습니다.

일반 파일 시스템 백업 기술과 마찬가지로 이 방법은 하위 집합이 아닌 전체 데이터베이스 클러스터의 복원만 지원할 수 있습니다. 또한 많은 아카이브 스토리지가 필요합니다. 기본 백업은 부피가 클 수 있으며 사용량이 많은 시스템은 아카이브해야 하는 WAL 트래픽의 메가바이트를 생성하게 됩니다. 그럼에도 불구하고 높은 신뢰성이 필요한 많은 상황에서는 선호되는 백업 기술입니다.

연속 보관을 사용하여 성공적으로 복구하려면(또는라고도 함온라인 백업많은 데이터베이스 공급업체에서 제공) 적어도 백업 시작 시간까지 뒤로 확장되는 아카이브된 WAL 윈 토토의 연속 시퀀스가 ​​필요합니다. 따라서 시작하려면 WAL 윈 토토 보관 절차를 설정하고 테스트해야 합니다.이전당신은 첫 번째 베이스 백업을 수행합니다. 따라서 먼저 WAL 윈 토토 보관 메커니즘에 대해 논의합니다.

25.3.1. WAL 보관 설정

추상적인 의미에서는 달리기PostgreSQL시스템은 무기한 긴 WAL 레코드 시퀀스를 생성합니다. 시스템은 이 시퀀스를 WAL로 물리적으로 나눕니다.세그먼트 윈 토토, 일반적으로 각각 16MB입니다(단, 세그먼트 크기는 빌드할 때 변경될 수 있음)포스트그레SQL). 세그먼트 윈 토토에는 추상 WAL 시퀀스에서의 위치를 ​​반영하는 숫자 이름이 지정됩니다. WAL 아카이브를 사용하지 않을 때 시스템은 일반적으로 몇 개의 세그먼트 윈 토토만 생성한 다음재활용더 이상 필요하지 않은 세그먼트 윈 토토의 이름을 더 높은 세그먼트 번호로 바꾸면 됩니다. 마지막 체크포인트 이전의 내용을 가진 세그먼트 윈 토토은 더 이상 관심 대상이 아니며 재활용될 수 있다고 가정합니다.

WAL 데이터를 보관할 때 각 세그먼트 윈 토토이 채워지면 해당 콘텐츠를 캡처하고 세그먼트 윈 토토이 재사용을 위해 재활용되기 전에 해당 데이터를 어딘가에 저장해야 합니다. 애플리케이션과 사용 가능한 하드웨어에 따라 다양한 방법이 있을 수 있습니다.데이터를 어딘가에 저장하는 중: 세그먼트 윈 토토을 다른 시스템의 NFS 마운트 디렉토리에 복사하거나, 테이프 드라이브에 쓰거나(각 파일의 원래 이름을 식별할 수 있는 방법이 있는지 확인), 일괄 처리하여 CD에 굽거나 완전히 다른 방법으로 만들 수 있습니다. 데이터베이스 관리자에게 유연성을 제공하기 위해,PostgreSQL보관 작업이 어떻게 수행될지에 대해 어떠한 가정도 하지 않으려고 노력합니다. 대신에,포스트그레SQL관리자는 완료된 세그먼트 윈 토토을 필요한 곳으로 복사하기 위해 실행할 쉘 명령을 지정할 수 있습니다. 명령은 다음과 같이 간단할 수 있습니다.cp또는 복잡한 쉘 스크립트를 호출할 수도 있습니다. 모두 귀하에게 달려 있습니다.

WAL 보관을 활성화하려면 다음을 설정하세요.wal_level구성 매개변수 to복제본이상,archive_mode켜짐, 그리고 사용할 셸 명령을 지정합니다.archive_command구성 매개변수. 실제로 이러한 설정은 항상postgresql.conf윈 토토. 안에archive_command, %p은 아카이브할 윈 토토의 경로 이름으로 대체되고,%f은 파일 이름으로만 대체됩니다. (경로 이름은 현재 작업 디렉터리, 즉 클러스터의 데이터 디렉터리를 기준으로 합니다.) 사용%%실제 내용을 삽입해야 하는 경우%명령의 문자입니다. 가장 간단하고 유용한 명령은 다음과 같습니다.

archive_command = '테스트! -f /mnt/server/archivedir/%f && cp %p /mnt/server/archivedir/%f' # 유닉스
archive_command = '복사 "%p" "C:\\server\\archivedir\\%f"' # Windows

보관 가능한 WAL 세그먼트를 디렉토리에 복사합니다/mnt/서버/아카이브디렉터리. (이는 권장 사항이 아닌 예시이며 일부 플랫폼에서는 작동하지 않을 수 있습니다.)%p그리고%f매개변수가 대체되었으므로 실행되는 실제 명령은 다음과 같습니다.

테스트! -f /mnt/server/archivedir/00000001000000A900000065 && cp pg_wal/00000001000000A900000065 /mnt/server/archivedir/00000001000000A900000065

보관할 새 윈 토토마다 유사한 명령이 생성됩니다.

보관 명령은 동일한 사용자의 소유권으로 실행됩니다.PostgreSQL서버가 다음 계정으로 실행 중입니다. 보관되는 일련의 WAL 파일에는 데이터베이스의 모든 내용이 효과적으로 포함되어 있으므로 보관된 데이터가 엿보는 눈으로부터 보호되는지 확인하고 싶을 것입니다. 예를 들어 그룹 또는 전체 읽기 액세스 권한이 없는 디렉터리에 보관합니다.

아카이브 명령이 성공할 경우에만 종료 상태 0을 반환하는 것이 중요합니다. 결과가 0이 되면,PostgreSQL파일이 성공적으로 아카이브되었다고 가정하고 해당 파일을 제거하거나 재활용합니다. 그러나 0이 아닌 상태는 다음과 같습니다.PostgreSQL윈 토토이 보관되지 않았습니다; 성공할 때까지 주기적으로 다시 시도합니다.

아카이브 명령은 일반적으로 기존 아카이브 윈 토토 덮어쓰기를 거부하도록 설계되어야 합니다. 이는 관리자 오류(예: 서로 다른 두 서버의 출력을 동일한 아카이브 디렉터리로 보내는 경우)가 발생할 경우 아카이브의 무결성을 유지하는 중요한 안전 기능입니다.

제안된 아카이브 명령을 테스트하여 실제로 기존 윈 토토을 덮어쓰지 않는지 확인하는 것이 좋습니다.그리고 이 경우 0이 아닌 상태를 반환합니다. 위의 Unix용 예제 명령은 별도의테스트단계. 일부 Unix 플랫폼에서는,cp다음과 같은 스위치가 있습니다-i동일한 작업을 덜 장황하게 수행하는 데 사용할 수 있지만 올바른 종료 상태가 반환되는지 확인하지 않고 이에 의존해서는 안 됩니다. (특히 GNUcp다음의 경우 상태 0을 반환합니다.-i이(가) 사용되었으며 대상 윈 토토이 이미 존재합니다.아님원하는 동작입니다.)

보관 설정을 설계하는 동안 일부 측면에서 운영자 개입이 필요하거나 아카이브 공간이 부족하여 아카이브 명령이 반복적으로 실패할 경우 어떻게 될지 고려하십시오. 예를 들어, Autochanger 없이 테이프에 쓰는 경우 이런 일이 발생할 수 있습니다. 테이프가 가득 차면 테이프를 교체할 때까지 더 이상 아무것도 보관할 수 없습니다. 상황이 합리적으로 신속하게 해결될 수 있도록 오류 조건이나 인간 운영자에 대한 요청이 적절하게 보고되는지 확인해야 합니다. 그만큼pg_wal/디렉토리는 상황이 해결될 때까지 WAL 세그먼트 윈 토토로 계속 채워집니다. (다음을 포함하는 파일 시스템인 경우pg_wal/채워지고,포스트그레SQLPANIC 종료를 수행합니다. 커밋된 트랜잭션은 손실되지 않지만 일부 공간을 확보할 때까지 데이터베이스는 오프라인 상태로 유지됩니다.)

보관 명령의 속도는 서버가 WAL 데이터를 생성하는 평균 속도를 따라갈 수 있는 한 중요하지 않습니다. 아카이빙 프로세스가 조금 늦어지더라도 정상적인 작업은 계속됩니다. 보관이 크게 뒤쳐지면 재해 발생 시 손실되는 데이터의 양이 늘어납니다. 이는 또한 다음을 의미합니다.pg_wal/디렉토리에는 아직 보관되지 않은 세그먼트 윈 토토이 많이 포함되어 결국 사용 가능한 디스크 공간을 초과할 수 있습니다. 보관 프로세스를 모니터링하여 의도한 대로 작동하는지 확인하는 것이 좋습니다.

보관 명령을 작성할 때, 보관할 윈 토토 이름의 길이는 최대 64자이며 ASCII 문자, 숫자 및 점의 조합을 포함할 수 있다고 가정해야 합니다. 원래 상대 경로를 보존할 필요는 없습니다(%p) 하지만 윈 토토 이름()을 보존해야 합니다.%f).

WAL 보관을 통해 귀하의 데이터에 대한 수정 사항을 복원할 수 있지만PostgreSQL데이터베이스에서는 구성 윈 토토에 대한 변경 사항을 복원하지 않습니다(즉,postgresql.conf, pg_hba.conf그리고pg_ident.conf), 이는 SQL 작업을 통하지 않고 수동으로 편집되기 때문입니다. 정기적인 윈 토토 시스템 백업 절차에 따라 백업될 위치에 구성 윈 토토을 보관할 수 있습니다. 보다PostgreSQL : 문서 : 10 : 19.2. 사설 토토 사이트 위치구성 윈 토토을 재배치하는 방법.

아카이브 명령은 완료된 WAL 세그먼트에서만 호출됩니다. 따라서 서버가 WAL 트래픽을 거의 생성하지 않는 경우(또는 트래픽이 발생하는 경우 여유 기간이 있는 경우) 트랜잭션 완료와 아카이브 스토리지에 안전한 기록 사이에 긴 지연이 있을 수 있습니다. 보관되지 않은 데이터의 오래된 기간을 제한하려면 다음을 설정할 수 있습니다.archive_timeout서버가 적어도 그만큼 자주 새로운 WAL 세그먼트 윈 토토로 전환하도록 강제합니다. 강제 전환으로 인해 초기에 보관된 보관 파일은 완전히 전체 파일과 길이가 여전히 동일합니다. 따라서 매우 짧게 설정하는 것은 현명하지 않습니다.archive_timeout— 아카이브 저장 공간이 너무 커질 것입니다.archive_timeout1분 정도의 설정이 일반적으로 합리적입니다.

또한 다음을 사용하여 수동으로 세그먼트 전환을 강제할 수 있습니다.pg_switch_wal방금 완료된 거래가 가능한 한 빨리 보관되도록 하려는 경우. WAL 관리와 관련된 기타 유틸리티 기능은 다음과 같습니다.표 9.79.

언제wal_levelis최소일부 SQL 명령은 설명된 대로 WAL 로깅을 방지하도록 최적화되었습니다.섹션 14.4.7. 이러한 문 중 하나를 실행하는 동안 보관 또는 스트리밍 복제가 설정된 경우 WAL에는 보관 복구를 위한 충분한 정보가 포함되지 않습니다. (충돌 복구는 영향을 받지 않습니다.) 이러한 이유로,wal_level서버 시작시에만 변경될 수 있습니다. 하지만,archive_command구성 파일을 다시 로드하여 변경할 수 있습니다. 일시적으로 보관을 중지하려는 경우 한 가지 방법은 다음을 설정하는 것입니다.archive_command빈 문자열(''). 이로 인해 WAL 파일이 다음에 축적됩니다.pg_wal/작동할 때까지archive_command재설립되었습니다.

25.3.2. 기본 백업 만들기

기본 백업을 수행하는 가장 쉬운 방법은 다음을 사용하는 것입니다.pg_basebackup도구. 일반 윈 토토이나 tar 아카이브로 기본 백업을 생성할 수 있습니다. 보다 유연성이 있는 경우pg_basebackup제공할 수 있어야 하며, 낮은 수준의 API를 사용하여 기본 백업을 만들 수도 있습니다(참조섹션 25.3.3).

기본 백업을 만드는 데 걸리는 시간에 대해 걱정할 필요가 없습니다. 그러나 일반적으로 서버를 실행하는 경우full_page_writesdisabled, 이후 백업이 실행되는 동안 성능 저하를 느낄 수 있습니다.full_page_writes백업 모드 중에 강제로 활성화됩니다.

백업을 사용하려면 파일 시스템 백업 도중과 이후에 생성된 모든 WAL 세그먼트 윈 토토을 보관해야 합니다. 이를 수행하는 데 도움을 주기 위해 기본 백업 프로세스는 다음을 생성합니다.백업 기록 윈 토토즉시 WAL 아카이브 영역에 저장됩니다. 이 파일의 이름은 파일 시스템 백업에 필요한 첫 번째 WAL 세그먼트 윈 토토의 이름을 따서 지정되었습니다. 예를 들어, 시작 WAL 파일이 다음과 같은 경우0000000100001234000055CD백업 기록 윈 토토의 이름은 다음과 같습니다0000000100001234000055CD.007C9330.backup. (파일 이름의 두 번째 부분은 WAL 파일 내의 정확한 위치를 나타내며 일반적으로 무시할 수 있습니다.) 파일 시스템 백업과 백업 중에 사용된 WAL 세그먼트 윈 토토을 안전하게 보관하면(백업 기록 윈 토토에 지정됨) 숫자가 적은 이름을 가진 모든 보관된 WAL 세그먼트는 파일 시스템 백업을 복구하는 데 더 이상 필요하지 않으며 삭제할 수 있습니다. 그러나 데이터를 복구할 수 있다는 확신을 가지려면 여러 백업 세트를 유지하는 것을 고려해야 합니다.

백업 기록 윈 토토은 단지 작은 텍스트 파일입니다. 여기에는 귀하가 제공한 라벨 문자열이 포함되어 있습니다.pg_basebackup뿐만 아니라 백업의 시작 및 종료 시간과 WAL 세그먼트도 포함됩니다. 관련 덤프 윈 토토을 식별하기 위해 레이블을 사용한 경우 보관된 기록 윈 토토만으로도 복원할 덤프 윈 토토을 알 수 있습니다.

보관된 모든 WAL 윈 토토을 마지막 기본 백업으로 다시 보관해야 하기 때문에 기본 백업 간의 간격은 일반적으로 보관된 WAL 윈 토토에 확장하려는 저장 용량에 따라 선택해야 합니다. 또한 복구가 필요한 경우 복구에 소요될 준비가 된 시간도 고려해야 합니다. 시스템은 모든 WAL 세그먼트를 재생해야 하며 마지막 기본 백업 이후 오랜 시간이 걸렸다면 시간이 걸릴 수 있습니다.

25.3.3. 낮은 수준 API를 사용하여 기본 백업 만들기

낮은 수준의 API를 사용하여 기본 백업을 만드는 절차에는 다음보다 몇 가지 단계가 더 포함되어 있습니다.pg_basebackup방법이지만 비교적 간단합니다. 이러한 단계를 순차적으로 실행하고 다음 단계로 진행하기 전에 단계의 성공을 확인하는 것이 매우 중요합니다.

낮은 수준의 기본 백업은 비독점적 또는 독점적인 방법으로 이루어질 수 있습니다. 비독점적 방법이 권장되며 독점적인 방법은 더 이상 사용되지 않으며 결국 제거될 예정입니다.

25.3.3.1. 비독점적인 낮은 수준의 백업 만들기

비배타적 낮은 수준 백업은 다른 동시 백업 실행을 허용하는 백업입니다(동일한 백업 API를 사용하여 시작된 백업과 다음을 사용하여 시작된 백업 모두pg_basebackup).

  1. WAL 보관이 활성화되어 작동하는지 확인하세요.

  2. pg_start_backup을 실행할 수 있는 권한이 있는 사용자(수퍼유저 또는 함수에 대해 EXECUTE 권한이 부여된 사용자)로 서버(데이터베이스는 중요하지 않음)에 연결하고 명령을 실행하십시오:

    SELECT pg_start_backup('라벨', false, false);

    어디에서라벨는 이 백업 작업을 고유하게 식별하는 데 사용하려는 문자열입니다. 연결 호출pg_start_backup백업이 끝날 때까지 유지되어야 합니다. 그렇지 않으면 백업이 자동으로 중단됩니다.

    기본적으로,pg_start_backup완료하는 데 시간이 오래 걸릴 수 있습니다. 이는 체크포인트를 수행하고 체크포인트에 필요한 I/O가 상당한 시간(기본적으로 체크포인트 간 간격의 절반)에 걸쳐 분산되기 때문입니다(구성 매개변수 참조).checkpoint_completion_target). 이는 쿼리 처리에 미치는 영향을 최소화하기 때문에 일반적으로 원하는 것입니다. 최대한 빨리 백업을 시작하고 싶다면 두 번째 매개변수를로 변경하세요., 가능한 한 많은 I/O를 사용하여 즉시 체크포인트를 실행합니다.

    세 번째 매개변수는거짓말한다pg_start_backup비독점적 기본 백업을 시작합니다.

  3. 다음과 같은 편리한 파일 시스템 백업 도구를 사용하여 백업을 수행하십시오.타르또는cpio(아님pg_dump또는pg_dumpall). 이 작업을 수행하는 동안 데이터베이스의 정상적인 작동을 중지하는 것은 필요하지도 바람직하지도 않습니다. 보다섹션 25.3.3.3이 백업 중에 고려해야 할 사항.

  4. 이전과 동일한 연결에서 다음 명령을 실행하십시오:

    SELECT * FROM pg_stop_backup(false, true);

    이렇게 하면 백업 모드가 종료됩니다. 기본에서는 다음 WAL 세그먼트로 자동 전환도 수행합니다. 대기 상태에서는 WAL 세그먼트를 자동으로 전환할 수 없으므로 실행하는 것이 좋습니다.pg_switch_wal33677_33851

    pg_stop_backup3개의 값이 있는 하나의 행을 반환합니다. 이 필드 중 두 번째는라는 윈 토토에 기록되어야 합니다.backup_label백업의 루트 디렉토리에 있습니다. 세 번째 필드는라는 이름의 윈 토토에 기록되어야 합니다.테이블스페이스_맵필드가 비어 있지 않은 경우. 이러한 파일은 백업 작업에 필수적이며 수정 없이 바이트 단위로 작성되어야 하며, 이 경우 파일을 바이너리 모드에서 열어야 할 수도 있습니다.

  5. 백업 중에 활성화된 WAL 세그먼트 윈 토토이 아카이브되면 모든 작업이 완료됩니다. 다음으로 식별되는 파일:pg_stop_backup의 첫 번째 반환 값은 전체 백업 파일 세트를 구성하는 데 필요한 마지막 세그먼트입니다. 기본에서 다음과 같은 경우아카이브_모드활성화되었으며wait_for_archive매개변수는, pg_stop_backup마지막 세그먼트가 아카이브될 때까지 반환되지 않습니다. 대기 중입니다.아카이브_모드반드시항상다음을 위해pg_stop_backup기다려라. 이미 구성했으므로 이러한 윈 토토의 보관은 자동으로 수행됩니다.archive_command. 대부분의 경우 이는 빠르게 발생하지만 지연이 없는지 확인하기 위해 아카이브 시스템을 모니터링하는 것이 좋습니다. 아카이브 명령 실패로 인해 아카이브 프로세스가 뒤처진 경우 아카이브가 성공하고 백업이 완료될 때까지 계속 재시도합니다. 실행에 시간 제한을 두려는 경우pg_stop_backup, 적절한 설정statement_timeout값이지만 다음과 같은 경우에는 주의하세요pg_stop_backup이로 인해 백업이 유효하지 않을 수 있으므로 종료됩니다.

    백업 프로세스가 백업에 필요한 모든 WAL 세그먼트 윈 토토이 성공적으로 아카이브되었는지 모니터링하고 확인하는 경우wait_for_archive매개변수(기본값은 true)를 false로 설정하여 다음을 가질 수 있습니다.pg_stop_backup중지 백업 레코드가 WAL에 기록되자마자 반환됩니다. 기본적으로,pg_stop_backup모든 WAL이 보관될 때까지 기다립니다. 이는 다소 시간이 걸릴 수 있습니다. 이 옵션은 주의해서 사용해야 합니다. WAL 보관이 올바르게 모니터링되지 않으면 백업에 모든 WAL 윈 토토이 포함되지 않을 수 있으므로 불완전하고 복원할 수 없습니다.

25.3.3.2. 독점적인 낮은 수준의 백업 만들기

독점 백업 프로세스는 비독점 백업 프로세스와 거의 동일하지만 몇 가지 주요 단계가 다릅니다. 이 유형의 백업은 기본 백업에서만 수행할 수 있으며 동시 백업을 허용하지 않습니다. 앞서서PostgreSQL9.6, 이것은 사용 가능한 유일한 저수준 방법이었지만 이제 모든 사용자는 가능하면 비독점 백업을 사용하도록 스크립트를 업그레이드하는 것이 좋습니다.

  1. WAL 보관이 활성화되어 작동하는지 확인하세요.

  2. pg_start_backup을 실행할 권한이 있는 사용자(수퍼유저 또는 함수에 대해 EXECUTE 권한이 부여된 사용자)로 서버에 연결하고(어떤 데이터베이스인지는 중요하지 않음) 다음 명령을 실행하십시오.

    SELECT pg_start_backup('라벨');

    어디에서라벨은 이 백업 작업을 고유하게 식별하는 데 사용하려는 문자열입니다.pg_start_backup생성백업 라벨윈 토토, 호출됨backup_label, 시작 시간 및 레이블 문자열을 포함하여 백업에 대한 정보가 있는 클러스터 디렉터리에 있습니다. 이 함수는 또한테이블스페이스 맵윈 토토, 호출됨테이블스페이스_맵, 테이블스페이스 심볼릭 링크에 대한 정보가 있는 클러스터 디렉터리에서pg_tblspc/해당 링크가 하나 이상 존재하는 경우. 두 윈 토토 모두 백업에서 복원해야 하는 경우 백업의 무결성에 매우 중요합니다.

    기본적으로,pg_start_backup완료하는 데 시간이 오래 걸릴 수 있습니다. 이는 체크포인트를 수행하고 체크포인트에 필요한 I/O가 상당한 시간(기본적으로 체크포인트 간 간격의 절반)에 걸쳐 분산되기 때문입니다(구성 매개변수 참조).checkpoint_completion_target). 이는 쿼리 처리에 미치는 영향을 최소화하기 때문에 일반적으로 원하는 것입니다. 가능한 한 빨리 백업을 시작하려면 다음을 사용하세요.

    SELECT pg_start_backup('라벨', true);

    이것은 체크포인트가 가능한 한 빨리 완료되도록 강제합니다.

  3. 다음과 같은 편리한 파일 시스템 백업 도구를 사용하여 백업을 수행하십시오.타르또는cpio(아님pg_dump또는pg_dumpall). 이 작업을 수행하는 동안 데이터베이스의 정상적인 작동을 중지하는 것은 필요하지도 바람직하지도 않습니다. 보다섹션 25.3.3.3이 백업 중에 고려해야 할 사항.

    백업 도중 서버가 충돌하면 다음이 될 때까지 다시 시작하지 못할 수도 있다는 점에 유의하십시오.backup_label파일이 다음에서 수동으로 삭제되었습니다.PGDATA디렉토리.

  4. 다시 pg_stop_backup을 실행할 수 있는 권한이 있는 사용자(수퍼유저 또는 함수에 대해 EXECUTE 권한이 부여된 사용자)로 데이터베이스에 연결하고 다음 명령을 실행하십시오.

    SELECT pg_stop_backup();

    이 함수는 백업 모드를 종료하고 다음 WAL 세그먼트로 자동 전환을 수행합니다. 전환하는 이유는 백업 간격 동안 기록된 마지막 WAL 세그먼트를 보관할 수 있도록 준비하기 위한 것입니다.

  5. 백업 중에 활성화된 WAL 세그먼트 윈 토토이 아카이브되면 모든 작업이 완료됩니다. 다음으로 식별되는 파일:pg_stop_backup'의 결과는 완전한 백업 윈 토토 세트를 구성하는 데 필요한 마지막 세그먼트입니다. 만약에아카이브_모드활성화되었습니다.pg_stop_backup마지막 세그먼트가 아카이브될 때까지 반환되지 않습니다. 이미 구성했으므로 이러한 윈 토토의 보관은 자동으로 수행됩니다.archive_command. 대부분의 경우 이는 빠르게 발생하지만 지연이 없는지 확인하기 위해 아카이브 시스템을 모니터링하는 것이 좋습니다. 아카이브 명령 실패로 인해 아카이브 프로세스가 뒤처진 경우 아카이브가 성공하고 백업이 완료될 때까지 계속 재시도합니다. 실행에 시간 제한을 두려는 경우pg_stop_backup, 적절한 설정statement_timeout값이지만 다음과 같은 경우에는 주의하세요pg_stop_backup이로 인해 백업이 유효하지 않을 수 있으므로 종료됩니다.

25.3.3.3. 데이터 디렉토리 백업

일부 윈 토토 시스템 백업 도구는 복사가 진행되는 동안 복사하려는 윈 토토이 변경되면 경고나 오류를 표시합니다. 활성 데이터베이스의 기본 백업을 수행할 때 이러한 상황은 정상이며 오류가 아닙니다. 그러나 이러한 종류의 불만 사항과 실제 오류를 구별할 수 있는지 확인해야 합니다. 예를 들어, 일부 버전은rsync다음에 대한 별도의 종료 코드를 반환합니다.사라진 소스 윈 토토, 그리고 이 종료 코드를 오류가 아닌 경우로 받아들이도록 드라이버 스크립트를 작성할 수 있습니다. 또한 GNU의 일부 버전타르윈 토토이 잘린 경우 치명적인 오류와 구별할 수 없는 오류 코드를 반환합니다.타르복사 중이었습니다. 다행히 GNU타르버전 1.16 이상은 백업 중에 윈 토토이 변경된 경우 1로 종료되고 기타 오류의 경우 2로 종료됩니다. GNU와 함께타르버전 1.23 이상에서는 경고 옵션을 사용할 수 있습니다.--warning=윈 토토 없음-변경됨 --warning=윈 토토 없음-제거됨관련 경고 메시지를 숨깁니다.

백업에 데이터베이스 클러스터 디렉토리 아래의 모든 윈 토토이 포함되어 있는지 확인하십시오(예:/usr/local/pgsql/data). 이 디렉터리 아래에 있지 않은 테이블스페이스를 사용하는 경우 해당 테이블스페이스도 포함하도록 주의하세요. 백업에서 심볼릭 링크를 링크로 보관해야 합니다. 그렇지 않으면 복원 시 테이블스페이스가 손상됩니다.

그러나 클러스터 내의 윈 토토은 백업에서 생략해야 합니다.pg_wal/하위 디렉토리. 이렇게 약간 조정하면 복원 시 실수가 발생할 위험이 줄어들기 때문에 가치가 있습니다. 다음과 같은 경우 쉽게 정리할 수 있습니다.pg_wal/는 성능상의 이유로 일반적으로 사용되는 클러스터 디렉토리 외부의 위치를 ​​가리키는 심볼릭 링크입니다. 제외할 수도 있습니다.postmaster.pid그리고postmaster.opts, 달리기에 대한 정보를 기록합니다.우체국장, 그것에 관한 것이 아닙니다우체국장결국 이 백업을 사용할 것입니다. (이러한 윈 토토은 혼동을 줄 수 있습니다.pg_ctl.)

클러스터 내의 윈 토토을 백업에서 생략하는 것도 좋은 생각인 경우가 많습니다.pg_replslot/디렉터리를 사용하여 마스터에 존재하는 복제 슬롯이 백업의 일부가 되지 않도록 합니다. 그렇지 않으면 대기를 생성하기 위해 백업을 나중에 사용하면 대기에서 WAL 파일이 무기한 보존될 수 있으며, 핫 대기 피드백이 활성화된 경우 마스터가 부풀어오르게 될 수 있습니다. 왜냐하면 해당 복제 슬롯을 사용하는 클라이언트가 대기가 아닌 마스터의 슬롯에 계속 연결되어 업데이트되기 때문입니다. 백업이 새 마스터를 생성하는 데만 사용하도록 의도된 경우에도 복제 슬롯을 복사하는 것은 특별히 유용할 것으로 예상되지 않습니다. 새 마스터가 온라인 상태가 될 때 해당 슬롯의 콘텐츠가 심하게 최신이 아닐 가능성이 높기 때문입니다.

디렉토리의 내용pg_dynshmem/, pg_notify/, pg_serial/, pg_snapshots/, pg_stat_tmp/pg_subtrans/(디렉터리 자체는 아님)은 postmaster 시작 시 초기화되므로 백업에서 생략할 수 있습니다. 만약에stats_temp_directory이 설정되어 있고 데이터 디렉터리 아래에 있으면 해당 디렉터리의 내용도 생략할 수 있습니다.

다음으로 시작하는 모든 파일 또는 디렉토리pgsql_tmp백업에서 생략할 수 있습니다. 이러한 파일은 postmaster 시작 시 제거되며 필요에 따라 디렉터리가 다시 생성됩니다.

백업 라벨 파일에는 귀하가 제공한 라벨 문자열이 포함되어 있습니다.pg_start_backup및 해당 시간pg_start_backup실행되었으며 시작 WAL 파일의 이름입니다. 따라서 혼란스러운 경우 백업 파일 내부를 살펴보고 덤프 파일이 어느 백업 세션에서 왔는지 정확하게 확인할 수 있습니다. 테이블스페이스 맵 파일에는 디렉토리에 존재하는 심볼릭 링크 이름이 포함됩니다.pg_tblspc/및 각 심볼릭 링크의 전체 경로. 이러한 파일은 단지 정보 제공을 위한 것이 아닙니다. 그 존재와 내용은 시스템 복구 프로세스의 올바른 작동에 매우 중요합니다.

서버가 정지된 상태에서도 백업이 가능합니다. 이 경우에는 분명히 사용할 수 없습니다.pg_start_backup또는pg_stop_backup따라서 어떤 백업이 어떤 것인지, 관련 WAL 파일이 얼마나 이전에 있는지 추적하는 것은 사용자 자신의 장치에 맡겨집니다. 일반적으로 위의 지속적인 보관 절차를 따르는 것이 좋습니다.

25.3.4. 연속 아카이브 백업을 사용하여 복구

좋아요, 최악의 상황이 발생했으니 백업에서 복구해야 합니다. 절차는 다음과 같습니다.

  1. 서버가 실행 중이면 중지하세요.

  2. 공간이 있다면 나중에 필요할 경우를 대비해 전체 클러스터 데이터 디렉토리와 테이블스페이스를 임시 위치에 복사하세요. 이 예방 조치를 수행하려면 시스템에 기존 데이터베이스의 복사본 두 개를 보관할 수 있는 충분한 여유 공간이 있어야 합니다. 공간이 충분하지 않으면 최소한 클러스터의 내용을 저장해야 합니다.pg_wal하위 디렉토리. 시스템이 다운되기 전에 보관되지 않은 로그가 포함될 수 있기 때문입니다.

  3. 클러스터 데이터 디렉터리와 사용 중인 테이블스페이스의 루트 디렉터리 아래에 있는 모든 기존 윈 토토과 하위 디렉터리를 제거하십시오.

  4. 윈 토토 시스템 백업에서 데이터베이스 윈 토토을 복원하십시오. 올바른 소유권으로 복원되었는지 확인하십시오(데이터베이스 시스템 사용자,루트!) 및 올바른 권한이 있어야 합니다. 테이블스페이스를 사용하는 경우 다음의 심볼릭 링크를 확인해야 합니다.pg_tblspc/올바르게 복원되었습니다.

  5. 다음에 있는 모든 파일을 제거pg_wal/; 이는 윈 토토 시스템 백업에서 나온 것이므로 최신이 아니라 더 이상 사용되지 않을 수 있습니다. 보관처리하지 않은 경우pg_wal/전혀 그런 다음 적절한 권한으로 다시 생성하십시오. 이전에 그런 식으로 설정한 경우 심볼릭 링크로 다시 설정하도록 주의하십시오.

  6. 2단계에서 저장한 보관 해제된 WAL 세그먼트 윈 토토이 있는 경우 해당 파일을 복사하십시오.pg_wal/. (이동하지 말고 복사하는 것이 가장 좋습니다. 따라서 문제가 발생하여 다시 시작해야 하는 경우에도 수정되지 않은 파일이 그대로 남아 있습니다.)

  7. 복구 명령 파일 생성recovery.conf클러스터 데이터 디렉토리(참조배트맨 토토 : 문서 : 10 : 27 장. 복구 구성). 일시적으로 수정하고 싶을 수도 있습니다.pg_hba.conf복구가 성공했다고 확신할 때까지 일반 사용자가 연결하는 것을 방지합니다.

  8. 서버를 시작하세요. 서버는 복구 모드로 들어가서 필요한 보관된 WAL 윈 토토을 계속해서 읽습니다. 외부 오류로 인해 복구가 종료된 경우 서버를 다시 시작하면 복구가 계속됩니다. 복구 프로세스가 완료되면 서버 이름이 변경됩니다.recovery.conf복구.완료(나중에 실수로 복구 모드로 다시 들어가는 것을 방지하기 위해) 그런 다음 정상적인 데이터베이스 작업을 시작합니다.

  9. 데이터베이스의 내용을 검사하여 원하는 상태로 복구되었는지 확인하십시오. 그렇지 않은 경우 1단계로 돌아가세요. 문제가 없다면 사용자가 복원을 통해 연결할 수 있도록 허용하세요.pg_hba.conf정상으로.

이 모든 것의 핵심 부분은 복구 방법과 복구 실행 범위를 설명하는 복구 구성 윈 토토을 설정하는 것입니다. 당신은 사용할 수 있습니다recovery.conf.sample(일반적으로 설치 장소에 위치함공유/디렉토리)를 프로토타입으로 사용합니다. 반드시 지정해야 하는 한 가지는recovery.conf이것은restore_command, 이는 다음을 알려줍니다.PostgreSQL보관된 WAL 윈 토토 세그먼트를 검색하는 방법. 처럼archive_command, 이것은 쉘 명령 문자열입니다. 다음을 포함할 수 있습니다.%f, 원하는 로그 파일의 이름으로 대체됨, 그리고%p, 로그 파일을 복사할 경로 이름으로 대체됩니다. (경로 이름은 현재 작업 디렉터리, 즉 클러스터의 데이터 디렉터리를 기준으로 합니다.) 쓰기%%실제 내용을 삽입해야 하는 경우%명령의 문자입니다. 가장 간단하고 유용한 명령은 다음과 같습니다.

restore_command = 'cp /mnt/server/archivedir/%f %p'

디렉토리에서 이전에 보관된 WAL 세그먼트를 복사합니다/mnt/서버/아카이브디렉터리. 물론 운영자에게 적절한 테이프를 마운트하도록 요청하는 쉘 스크립트와 같이 훨씬 더 복잡한 것을 사용할 수도 있습니다.

명령이 실패 시 0이 아닌 종료 상태를 반환하는 것이 중요합니다. 명령할 것이다아카이브에 없는 윈 토토을 요청하도록 호출됩니다. 요청하면 0이 아닌 값을 반환해야 합니다. 이는 오류 조건이 아닙니다. 예외는 명령이 신호에 의해 종료된 경우입니다(SIGTERM, 데이터베이스 서버 종료의 일부로 사용됨) 또는 셸에 의한 오류(예: 명령을 찾을 수 없음)인 경우 복구가 중단되고 서버가 시작되지 않습니다.

요청된 모든 파일이 WAL 세그먼트 윈 토토이 되는 것은 아닙니다. 또한 다음과 같은 접미사가 있는 파일에 대한 요청도 예상됩니다..역사. 또한의 기본 이름은%p경로가 다음과 다를 것입니다.%f; 상호 교환이 가능하다고 기대하지 마십시오.

아카이브에서 찾을 수 없는 WAL 세그먼트는 다음에서 검색됩니다.pg_wal/; 이를 통해 최근 보관되지 않은 세그먼트를 사용할 수 있습니다. 그러나 아카이브에서 사용 가능한 세그먼트는 다음의 파일보다 우선적으로 사용됩니다.pg_wal/.

일반적으로 복구는 사용 가능한 모든 WAL 세그먼트를 통해 진행되므로 데이터베이스를 현재 시점(또는 사용 가능한 WAL 세그먼트를 고려하여 최대한 가까운 시점)으로 복원합니다. 따라서 정상적인 복구는 다음과 같이 종료됩니다.윈 토토을 찾을 수 없음메시지, 선택한 항목에 따른 오류 메시지의 정확한 텍스트restore_command. 또한 다음과 같은 이름의 파일에 대한 복구 시작 시 오류 메시지가 표시될 수도 있습니다.00000001.역사. 이는 또한 정상적인 현상이며 단순 복구 상황에서는 문제가 되지 않습니다. 보다섹션 25.3.5토론을 위해.

이전 시점(예: 주니어 DBA가 기본 트랜잭션 테이블을 삭제하기 직전)으로 복구하려면 필수 항목을 지정하십시오.PostgreSQL : 문서 : 10 : 27.2. 토토 사이트 추천 대상 설정inrecovery.conf. 다음과 같이 중지 지점을 지정할 수 있습니다.복구 대상, 날짜/시간, 명명된 복원 지점 기준 또는 특정 트랜잭션 ID 완료 기준. 이 글을 쓰는 시점에서는 사용할 거래 ID를 정확하게 식별하는 데 도움이 되는 도구가 없기 때문에 날짜/시간 및 명명된 복원 지점 옵션만 매우 유용하게 사용할 수 있습니다.

참고

중지 지점은 기본 백업의 종료 시간 이후여야 합니다. 즉, 종료 시간은 다음과 같습니다.pg_stop_backup. 기본 백업을 사용하여 해당 백업이 진행 중이었던 시점으로 복구할 수 없습니다. (이러한 시점으로 복구하려면 이전 기본 백업으로 돌아가서 거기에서 롤포워드해야 합니다.)

복구가 손상된 WAL 데이터를 발견하면 복구는 그 시점에서 중단되고 서버는 시작되지 않습니다. 이러한 경우 복구 프로세스는 처음부터 다시 실행될 수 있습니다.복구 대상손상 지점 이전에 복구가 정상적으로 완료될 수 있도록 합니다. 시스템 충돌과 같은 외부 이유로 복구가 실패하거나 WAL 아카이브에 액세스할 수 없게 된 경우 복구를 다시 시작할 수 있으며 거의 ​​실패한 지점부터 다시 시작됩니다. 복구 재시작은 일반 작업의 체크포인트와 매우 유사하게 작동합니다. 즉, 서버는 주기적으로 모든 상태를 디스크에 강제로 적용한 다음 업데이트합니다.pg_control이미 처리된 WAL 데이터를 다시 스캔할 필요가 없음을 나타내는 윈 토토입니다.

25.3.5. 타임라인

데이터베이스를 이전 시점으로 복원하는 능력은 시간 여행과 평행 우주에 관한 공상 과학 소설과 유사한 몇 가지 복잡성을 생성합니다. 예를 들어, 데이터베이스의 원래 기록에서 화요일 저녁 5시 15분에 중요한 테이블을 삭제했지만 수요일 정오까지 실수를 깨닫지 못했다고 가정해 보겠습니다. 당황하지 않고 백업을 꺼내어 화요일 저녁 5시 14분의 특정 시점으로 복원하고 실행 중입니다. 안에이것데이터베이스 세계의 역사에서 당신은 테이블을 삭제한 적이 없습니다. 그러나 나중에 이것이 그다지 좋은 생각이 아니라는 것을 깨닫고 원래 기록의 수요일 아침으로 돌아가고 싶다고 가정해 보겠습니다. 데이터베이스가 실행 중일 때 지금 돌아가고 싶은 시점으로 이어지는 일부 WAL 세그먼트 윈 토토을 덮어쓴 경우에는 그렇게 할 수 없습니다. 따라서 이를 방지하려면 특정 시점 복구를 수행한 후 생성된 일련의 WAL 레코드를 원래 데이터베이스 기록에서 생성된 WAL 레코드와 구별해야 합니다.

이 문제를 해결하려면,PostgreSQL다음의 개념을 가지고 있습니다타임라인. 아카이브 복구가 완료될 때마다 해당 복구 이후 생성된 일련의 WAL 레코드를 식별하기 위해 새로운 타임라인이 생성됩니다. 타임라인 ID 번호는 WAL 세그먼트 윈 토토 이름의 일부이므로 새 타임라인은 이전 타임라인에서 생성된 WAL 데이터를 덮어쓰지 않습니다. 실제로 다양한 타임라인을 보관하는 것이 가능합니다. 쓸모없는 기능처럼 보일 수도 있지만 종종 생명의 은인이 되기도 합니다. 어느 시점으로 복구해야 할지 확실하지 않아 이전 기록에서 분기할 최적의 위치를 ​​찾을 때까지 시행착오를 거쳐 여러 시점 복구를 수행해야 하는 상황을 생각해 보세요. 일정이 없으면 이 프로세스는 곧 관리하기 어려운 혼란을 초래할 것입니다. 타임라인을 사용하면 다음으로 복구할 수 있습니다.모든이전에 포기한 타임라인 브랜치의 상태를 포함한 이전 상태.

새로운 타임라인이 생성될 때마다PostgreSQL생성타임라인 기록어떤 타임라인에서 언제 분기되었는지 보여주는 파일입니다. 이러한 기록 파일은 여러 타임라인이 포함된 아카이브에서 복구할 때 시스템이 올바른 WAL 세그먼트 윈 토토을 선택할 수 있도록 하는 데 필요합니다. 따라서 WAL 세그먼트 윈 토토과 마찬가지로 WAL 아카이브 영역에 아카이브됩니다. 기록 파일은 작은 텍스트 파일이므로 (큰 세그먼트 윈 토토과 달리) 무기한으로 보관하는 것이 저렴하고 적절합니다. 원하는 경우 기록 파일에 설명을 추가하여 이 특정 타임라인이 생성된 방법과 이유에 대한 메모를 기록할 수 있습니다. 이러한 의견은 실험의 결과로 다양한 일정이 있을 때 특히 유용할 것입니다.

복구의 기본 동작은 기본 백업이 수행된 당시와 동일한 타임라인을 따라 복구하는 것입니다. 일부 하위 타임라인으로 복구하려는 경우(즉, 복구 시도 후 자체 생성된 일부 상태로 돌아가려는 경우) 대상 타임라인 ID를 지정해야 합니다.recovery.conf. 기본 백업보다 먼저 분기된 타임라인으로 복구할 수 없습니다.

25.3.6. 팁과 예시

지속적인 보관 구성에 대한 몇 가지 팁이 여기에 제공됩니다.

25.3.6.1. 독립형 핫 백업

사용 가능합니다PostgreSQL59659_59840pg_dump덤프. (또한 다음보다 훨씬 큽니다.pg_dump덤프이므로 어떤 경우에는 속도 이점이 무효화될 수 있습니다.)

기본 백업과 마찬가지로 독립 실행형 핫 백업을 생성하는 가장 쉬운 방법은 다음을 사용하는 것입니다.pg_basebackup도구. 다음을 포함하는 경우-X매개변수를 호출하면 백업을 사용하는 데 필요한 모든 미리 쓰기 로그가 자동으로 백업에 포함되며 백업을 복원하는 데 특별한 조치가 필요하지 않습니다.

백업 파일 복사에 더 많은 유연성이 필요한 경우 독립 실행형 핫 백업에도 하위 수준 프로세스를 사용할 수 있습니다. 낮은 수준의 독립형 핫 백업을 준비하려면 다음을 확인하세요.wal_level다음으로 설정됨복제본이상,아카이브_모드켜짐, 그리고 설정archive_command다음 경우에만 보관을 수행합니다.윈 토토 전환존재합니다. 예를 들어:

archive_command = '테스트! -f /var/lib/pgsql/backup_in_progress || (테스트 ! -f /var/lib/pgsql/archive/%f && cp %p /var/lib/pgsql/archive/%f)'

이 명령은 다음 경우에 보관을 수행합니다./var/lib/pgsql/backup_in_progress존재하고 그렇지 않으면 자동으로 종료 상태 0을 반환합니다(허용포스트그레SQL원치 않는 WAL 파일을 재활용합니다.

이 준비를 통해 다음과 같은 스크립트를 사용하여 백업을 수행할 수 있습니다:

터치 /var/lib/pgsql/backup_in_progress
psql -c "pg_start_backup('hot_backup')을 선택하십시오."
tar -cf /var/lib/pgsql/backup.tar /var/lib/pgsql/data/
psql -c "pg_stop_backup() 선택;"
rm /var/lib/pgsql/backup_in_progress
tar -rf /var/lib/pgsql/backup.tar /var/lib/pgsql/archive/

스위치 윈 토토/var/lib/pgsql/backup_in_progress이 먼저 생성되어 완료된 WAL 파일의 보관이 가능해집니다. 백업 후에는 스위치 윈 토토이 제거됩니다. 그러면 보관된 WAL 파일이 백업에 추가되어 기본 백업과 모든 필수 WAL 파일이 모두 동일한 파일의 일부가 됩니다.타르윈 토토. 백업 스크립트에 오류 처리를 추가하는 것을 잊지 마세요.

25.3.6.2. 압축된 아카이브 로그

아카이브 저장 크기가 걱정된다면 다음을 사용할 수 있습니다.gzip아카이브 윈 토토을 압축하려면:

archive_command = 'gzip < %p  /var/lib/pgsql/archive/%f'

그러면 다음을 사용해야 합니다gunzip복구 중:

restore_command = 'gunzip < /mnt/server/archivedir/%f  %p'

25.3.6.3. archive_command스크립트

많은 사람들이 자신을 정의하기 위해 스크립트를 사용하기로 선택합니다.archive_command, 그래서 그들의postgresql.conf항목이 매우 단순해 보입니다.

archive_command = 'local_backup_script.sh "%p" "%f"'

보관 프로세스에서 단일 명령 이상을 사용하려는 경우 별도의 스크립트 파일을 사용하는 것이 좋습니다. 이를 통해 스크립트 내에서 모든 복잡성을 관리할 수 있으며, 이는 다음과 같은 널리 사용되는 스크립트 언어로 작성될 수 있습니다.배쉬또는.

스크립트 내에서 해결될 수 있는 요구사항의 예는 다음과 같습니다:

  • 오프사이트 데이터 저장소를 안전하게 보호하기 위해 데이터 복사

  • WAL 윈 토토을 한 번에 하나씩 전송하지 않고 3시간마다 전송하도록 일괄 처리

  • 다른 백업 및 복구 소프트웨어와 인터페이스

  • 오류 보고를 위한 모니터링 소프트웨어와의 인터페이스

사용 시archive_command스크립트, 활성화하는 것이 바람직합니다logging_collector. 다음 주소로 작성된 모든 메시지stderr스크립트의 내용이 데이터베이스 서버 로그에 나타나므로 복잡한 구성이 실패할 경우 쉽게 진단할 수 있습니다.

25.3.7. 주의사항

이 글을 쓰는 시점에서 지속적인 보관 기술에는 몇 가지 제한 사항이 있습니다. 이러한 문제는 향후 릴리스에서 수정될 예정입니다.

  • 만약에데이터베이스 생성65210_65309데이터베이스 생성복사본이 기본 백업이 진행되는 동안 수정된 경우, 복구로 인해 해당 수정 사항이 생성된 데이터베이스에도 전파될 수 있습니다. 물론 이는 바람직하지 않습니다. 이러한 위험을 방지하려면 기본 백업을 수행하는 동안 템플릿 데이터베이스를 수정하지 않는 것이 가장 좋습니다.

  • 테이블스페이스 생성명령은 리터럴 절대 경로로 WAL 로그에 기록되므로 동일한 절대 경로를 사용하여 테이블스페이스 생성으로 재생됩니다. 로그가 다른 시스템에서 재생되는 경우 이는 바람직하지 않을 수 있습니다. 로그가 동일한 시스템에서 새 데이터 디렉토리로 재생되는 경우에도 위험할 수 있습니다. 재생은 여전히 ​​원래 테이블스페이스의 내용을 덮어쓰게 됩니다. 이러한 종류의 잠재적 문제를 방지하려면 테이블스페이스를 생성하거나 삭제한 후 새로운 기본 백업을 수행하는 것이 가장 좋습니다.

또한 기본값이라는 점에 유의해야 합니다.WAL형식은 많은 디스크 페이지 스냅샷을 포함하므로 상당히 부피가 큽니다. 이러한 페이지 스냅샷은 부분적으로 작성된 디스크 페이지를 수정해야 할 수 있으므로 충돌 복구를 지원하도록 설계되었습니다. 시스템 하드웨어 및 소프트웨어에 따라 부분 쓰기의 위험은 무시할 만큼 작을 수 있습니다. 이 경우 다음을 사용하여 페이지 스냅샷을 꺼서 보관된 로그의 총 볼륨을 크게 줄일 수 있습니다.full_page_writes매개변수. (다음의 참고 사항과 경고를 읽어보세요.범퍼카 토토 : 문서 : 10 : 30 장. 신뢰성과 쓰기 로그그렇게 하기 전에.) 페이지 스냅샷을 꺼도 PITR 작업에 대한 로그 사용이 차단되지 않습니다. 향후 개발 분야는 다음과 같은 경우에도 불필요한 페이지 사본을 제거하여 보관된 WAL 데이터를 압축하는 것입니다.full_page_writes켜져 있습니다. 그동안 관리자는 체크포인트 간격 매개변수를 최대한 늘려 WAL에 포함된 페이지 스냅샷 수를 줄이고 싶을 수도 있습니다.