20.5. 미리 로그 작성

이 설정 조정에 대한 추가 정보는 참조섹션 30.5.

20.5.1. 설정

Wal_level (enum)

Wal_levelWAL에 얼마나 많은 정보가 기록되어 있는지 결정합니다. 기본값은입니다.복제, 대기 서버에서 읽기 전용 쿼리 실행을 포함하여 WAL 아카이빙 및 복제를 지원하기에 충분한 데이터를 작성합니다.최소충돌 또는 즉시 종료토토 캔 복구하는 데 필요한 정보를 제외한 모든 로깅을 제거합니다. 마지막으로,논리논리적 디코딩을 지원하는 데 필요한 정보가 추가됩니다. 각 레벨에는 모든 낮은 수준으로 기록 된 정보가 포함됩니다.

최소레벨은 최소한의 월 볼륨을 생성합니다. 이를 작성하거나 다시 작성하는 거래에서 영구 관계에 대한 행 정보를 기록하지 않습니다.섹션 14.4.7). 이 최적화를 시작하는 작업에는 다음이 포함됩니다.

ALTER ... 세트 테이블 스페이스
클러스터
테이블 생성
Refresh Resisized View(동시에)
reindex
Truncate

그러나 최소한의 WAL은 시점 복구를위한 충분한 정보가 포함되어 있지 않으므로복제이상 연속 보관을 가능하게하려면 (archive_mode) 및 스트리밍 바이너리 복제. 실제로, 서버는이 모드에서 시작되지 않습니다.max_wal_senders는 0이 아닙니다. 변경Wal_levelto최소포인트 복구 및 대기 서버에 대한 이전베이스 백업을 사용할 수 없습니다.

in논리레벨, 동일한 정보가 다음과 같이 기록됩니다복제, 그리고 WAL에서 논리적 변경 세트를 추출하는 데 필요한 정보와 함께. 수준 사용논리특히 많은 테이블이 구성된 경우 WAL 볼륨을 증가시킵니다.복제 아이덴티티 전체그리고 많은업데이트and삭제진술이 실행되었습니다.

9.6 이전 릴리스 에서이 매개 변수도 값도 허용했습니다아카이브andhot_standby. 이것들은 여전히 ​​받아 들여지지 만복제.

fsync (부울)

이 매개 변수가 켜져 있으면PostgreSQL서버는 업데이트가 디스크에 물리적으로 작성되었는지 확인하여 발행fsync ()시스템 호출 또는 다양한 동등한 방법 (참조Wal_sync_method). 이를 통해 운영 체제 또는 하드웨어 충돌 후 데이터베이스 클러스터가 일관된 상태로 복구 할 수 있습니다.

끄는 동안fsync종종 성능 이점이므로 정전 또는 시스템 충돌시 정복 할 수없는 데이터 손상이 발생할 수 있습니다. 따라서 끄는 것이 좋습니다fsync외부 데이터토토 캔 전체 데이터베이스를 쉽게 재현 할 수있는 경우

끄기위한 안전한 상황의 예fsync백업 파일에서 새 데이터베이스 클러스터의 초기로드, 데이터베이스를 처리하기 위해 데이터베이스 클러스터를 사용하여 데이터베이스가 버리고 재현되거나, 자주 재현되고 실패한 데 사용되지 않는 읽기 전용 데이터베이스 클론을 위해 데이터베이스 클러스터를 사용합니다. 고품질 하드웨어만으로는 전원을 끄는 데 충분한 정당성이 아닙니다fsync.

변경시 신뢰할 수있는 복구의 경우fsyncOFF TO ON에서 커널의 모든 수정 된 버퍼를 내구성있는 저장소로 강제해야합니다. 클러스터가 종료되는 동안 또는 기간이를 수행 할 수 있습니다.fsync켜져 실행 중initdb--sync-dily, runningsync, 파일 시스템을 마치거나 서버 재부팅.

많은 상황토토 캔 끄기synchronous_commit비정규 거래의 경우 끄는 잠재적 성능 이점의 상당 부분을 제공 할 수 있습니다fsync, 데이터 손상의 승무원 위험없이.

fsync토토 캔만 설정할 수 있습니다on파일 또는 서버 명령 줄에. 이 매개 변수를 끄면 끄기를 고려하십시오full_page_writes.

synchronous_commit (enum)

데이터베이스 서버가 a를 반환하기 전에 WAL 처리가 얼마나 완료되어야하는지 지정합니다.성공클라이언트에 대한 표시. 유효한 값은Remote_Apply, on(기본값),Remote_write, Localoff.

ifsynchronous_standby_names비어 있고, 유일한 의미있는 설정은입니다.onandoff; Remote_Apply, Remote_writeandLocal모두 동일한 로컬 동기화 레벨을 제공합니다on. 모든 비의 지역 행동off모드는 WAL의 로컬 플러시를 디스크로 기다리는 것입니다. 안에off모드, 대기가 없으므로 클라이언트에게 성공이보고 될 때와 트랜잭션이 서버 충돌에 대해 안전하게 보장되는 시점 사이에 지연 될 수 있습니다. (최대 지연은 세 번Wal_writer_delay.)와 달리fsync,이 매개 변수 설정off데이터베이스 불일치의 위험을 초래하지 않습니다. 운영 체제 또는 데이터베이스 충돌로 인해 최근의 일부 커뮤니케이션 트랜잭션이 손실 될 수 있지만 데이터베이스 상태는 해당 거래가 깨끗하게 중단 된 경우와 동일합니다. 그래서, 회전synchronous_commitOFF는 거래의 내구성에 대한 정확한 확실성보다 성능이 더 중요한 경우 유용한 대안이 될 수 있습니다. 자세한 내용은 참조섹션 30.4.

ifsynchronous_standby_names비어 있지 않아synchronous_commit또한 트랜잭션 저작 여부가 대기 서버토토 캔 WAL 레코드가 처리 될 때까지 대기 할 것인지 제어합니다..

로 설정된 시점Remote_Apply, Commits는 현재 동기 대기에서 답장을 기다릴 때까지 기다릴 것입니다. 이렇게하면 WAL Replay를 기다리기 때문에 이전 설정보다 훨씬 큰 커밋 지연이 발생합니다.on, 현재 동기 대기토토 캔 답장이 될 때까지 대기 대기는 거래의 커밋 레코드를 받았으며 내구성있는 저장소로 플러시했습니다. 이렇게하면 기본 및 모든 동기 대지가 데이터베이스 스토리지의 손상을 입지 않으면 트랜잭션이 손실되지 않도록합니다.Remote_write, Commits는 현재 동기 대기토토 캔 답장이 될 때까지 기다릴 것입니다. 이 설정은 대기 인스턴스 인 경우 데이터 보존을 보장합니다.PostgreSQL충돌이지만 대기 시스템이 대기토토 캔 내구성있는 스토리지에 도달 할 필요는 없기 때문에 대기 시스템 수준 충돌을 겪는 경우는 아닙니다. 설정Local원인은 로컬 플러시가 디스크에 대한 대기를 기다리지 만 복제는 아닙니다. 동기 복제가 사용될 때 일반적으로 바람직하지는 않지만 완전성을 위해 제공됩니다.

이 매개 변수는 언제든지 변경할 수 있습니다. 하나의 트랜잭션에 대한 동작은 유도 할 때 실제로 설정에 따라 결정됩니다.로컬 Synchronous_Commit 설정거래 내토토 캔.

표 20.1의 기능을 요약합니다synchronous_commit설정.

표 20.1. synchronous_commit 모드

synchronous_commit 설정 지역 내구성 커밋 PG 충돌 후 대기 내구성 커밋 OS 충돌 후 대기 내구성 커밋 대기 쿼리 일관성
Remote_Apply
on
Remote_write
Local
off

Wal_sync_method (enum)

WAL 업데이트를 디스크로 강제하는 데 사용되는 방법. 만약에fsync꺼져 있다면 WAL 파일 업데이트는 전혀 강요되지 않기 때문에이 설정은 관련이 없습니다. 가능한 가치는 다음과 같습니다.

  • Open_DatasyncOpen ()옵션O_DSYNC)

  • fdatasync(Callfdatasync ()각 커밋토토 캔)

  • fsync(Callfsync ()각 커밋토토 캔)

  • fsync_writethrough(Callfsync ()각 커밋마다 디스크 쓰기 캐시의 쓰기 말을 강요)

  • Open_SyncOpen ()옵션O_SYNC)

Open_* 옵션도 사용o_direct사용 가능한 경우. 이러한 모든 선택이 모든 플랫폼토토 캔 사용할 수있는 것은 아닙니다.fdatasync는 Linux 및 FreeBSD의 기본값입니다. 기본값이 반드시 이상적인 것은 아닙니다.섹션 30.1. 이 매개 변수는토토 캔만 설정할 수 있습니다.on​​파일 또는 서버 명령 줄에.

full_page_writes (부울)

이 매개 변수가 켜져 있으면PostgreSQLServer는 체크 포인트 후 해당 페이지의 첫 번째 수정 중에 각 디스크 페이지의 전체 내용을 WAL에 씁니다. 운영 체제 충돌 중에 처리중인 페이지 쓰기가 부분적으로 만 완료 될 수 있으므로 구식 및 새 데이터가 혼합되어있는 온 디스크 페이지로 이어질 수 있기 때문에 필요합니다.

이 매개 변수를 설정하면 속도가 정상 작동하지만 시스템 고장 후에는 복귀 할 수없는 데이터 손상 또는 무음 데이터 손상으로 이어질 수 있습니다. 위험은 끄는 것과 비슷합니다fsync, 더 작지만 해당 매개 변수에 권장되는 것과 동일한 상황에 따라 꺼져야합니다.

이 매개 변수를 끄는 것은 PITR (Point-in-Time Recovery)을위한 WAL 아카이빙의 사용에 영향을 미치지 않습니다 (참조토토 사이트 PostgreSQL : 문서 : 15 : 26.3. 연속 보관 및 시점 복구 (PITR)).

이 매개 변수는토토 캔만 설정할 수 있습니다on파일 또는 서버 명령 줄에. 기본값은on.

Wal_log_hints (부울)

이 매개 변수가있을 때on, ThePostgreSQLServer는 체크 포인트 이후 해당 페이지의 첫 번째 수정 중에 각 디스크 페이지의 전체 내용을 WAL에 작성합니다.

데이터 체크섬이 활성화되면 힌트 비트 업데이트는 항상 월 에그 로그를 받고이 설정은 무시됩니다. 데이터베이스가 데이터 체크섬을 활성화 한 경우이 설정을 사용하여 추가 월 로깅이 얼마나 발생할 것인지 테스트 할 수 있습니다.

이 매개 변수는 서버 시작시에만 설정할 수 있습니다. 기본값은입니다.off.

Wal_compression (enum)

이 매개 변수는 지정된 압축 방법을 사용하여 WAL 압축을 가능하게합니다. 활성화되면PostgreSQL서버는 WAL에 작성된 전체 페이지 이미지를 압축합니다full_page_writes기본 백업 중 또는 기간 중입니다. WAL 재생 중에 압축 페이지 이미지가 압축 해제됩니다.PGLZ, LZ4(ifPostgreSQL-with-lz4) 및ZSTD(ifPostgreSQL-with-zstd). 기본값은입니다.off. 적절한 수퍼 유행자 및 사용자 만SET권한은이 설정을 변경할 수 있습니다.

압축 활성화는 복귀 할 수없는 데이터 손상의 위험을 증가시키지 않으면 서 WAL 볼륨을 줄일 수 있지만 WAL 로깅 중 압축에 소비 된 추가 CPU의 비용으로 WAL 리플레이 중 압축에 대한 추가 CPU 비용으로..

Wal_init_zero (부울)

로 설정된 경우on(기본값)이 옵션으로 인해 새 WAL 파일이 0으로 채워집니다. 일부 파일 시스템에서는 WAL 레코드를 작성하기 전에 공간이 할당되도록합니다.Copy-on-Write(COW) 파일 시스템은이 기술의 혜택을받지 못할 수 있으므로 불필요한 작업을 건너 뛰는 옵션이 제공됩니다. 로 설정된 경우off, 파일이 생성 될 때 최종 바이트 만 작성되어 예상 크기가 표시됩니다.

Wal_recycle (부울)

로 설정된 경우on(기본값),이 옵션은 새 옵션을 생성 할 필요가 없어 버드 파일을 이름 바꾸면 재활용하게됩니다. Cow 파일 시스템에서는 새 시스템을 만드는 것이 더 빠를 수 있으므로이 동작을 비활성화하기위한 옵션이 제공됩니다.

Wal_buffers (Integer)

아직 디스크에 기록되지 않은 WAL 데이터에 사용되는 공유 메모리의 양. -1의 기본 설정은의 1/32 (약 3%)와 같은 크기를 선택합니다.shared_buffers그러나 이상64KB또는 하나의 WAL 세그먼트의 크기 이상, 일반적으로16MB. 자동 선택이 너무 크거나 너무 작지만이 값은 수동으로 설정할 수 있지만보다 양수 값이32KB32KB. 이 값이 단위없이 지정되면 WAL 블록으로 간주됩니다.XLOG_BLCKSZ바이트, 일반적으로 8kb. 이 매개 변수는 서버 시작토토 캔만 설정할 수 있습니다.

WAL 버퍼의 내용은 모든 트랜잭션 커밋토토 캔 디스크에 기록되므로 매우 큰 값은 상당한 이점을 제공하지 않을 것입니다. 그러나이 값을 적어도 몇 메가 바이트로 설정하면 많은 고객이 한 번에 커밋하는 바쁜 서버토토 캔 쓰기 성능을 향상시킬 수 있습니다.

Wal_writer_delay (Integer)

WAL Writer가 시간 용어로 WAL을 얼마나 자주 플러시하는지 지정합니다. wall을 플러싱 한 후 작가는 |Wal_writer_delay. 마지막 플러시가 ~보다 적은 일이 발생하면Wal_writer_delayWal_writer_flush_afterWAL의 가치는 이후로 생산 된 이후로 WAL은 디스크로 플러시되지 않은 운영 체제에만 기록됩니다. 이 값이 단위없이 지정되면 밀리 초로 간주됩니다.200ms). 많은 시스템에서 수면 지연의 효과적인 해상도는 10 밀리 초입니다.Wal_writer_delay10의 배수가 아닌 값으로 10의 다음으로 설정하는 것과 동일한 결과를 얻을 수 있습니다.이 매개 변수는토토 캔만 설정할 수 있습니다.on​​파일 또는 서버 명령 줄에.

Wal_writer_flush_after (Integer)

WAL Writer가 WAL을 얼마나 자주 플러시하는 빈도를 지정합니다. 마지막 플러시가 ~보다 적은 일이 발생하면Wal_writer_delayWal_writer_flush_afterWAL의 가치는 이후로 생산 된 이후로 WAL은 디스크로 플러시되지 않은 운영 체제에만 기록됩니다. 만약에Wal_writer_flush_after로 설정되었습니다0그런 다음 WAL 데이터는 항상 즉시 플러시됩니다. 이 값이 단위없이 지정되면 WAL 블록으로 간주됩니다.XLOG_BLCKSZ바이트, 일반적으로 8kb. 기본값은1MB. 이 매개 변수는토토 캔만 설정할 수 있습니다.on​​파일 또는 서버 명령 줄에.

WAL_SKIP_THRESHOLD (Integer)

언제Wal_levelis최소및 트랜잭션은 영구 관계를 작성하거나 다시 작성한 후 새로운 데이터를 지속하는 방법을 결정합니다. 데이터 가이 설정보다 작은 경우 WAL 로그에 기록하십시오.2MB).

Commit_Delay (Integer)

설정Commit_DelayWAL 플러시가 시작되기 전에 시간 지연을 추가합니다. 이는 시스템 부하가 주어진 간격 내토토 캔 추가 트랜잭션이 커밋 될 수있을 정도로 높은 경우 단일 월 플러시를 통해 더 많은 수의 트랜잭션이 커밋 할 수 있도록하여 그룹 커밋 처리량을 향상시킬 수 있습니다.Commit_Delay각 월 플러시마다. 다른 거래가 커밋 할 준비가되지 않으면 지연이 낭비되기 때문에 최소한 지연이 수행됩니다.Commit_Siblings플러시가 시작될 때 다른 트랜잭션이 활성화됩니다. 또한 지연이 수행되지 않음fsync비활성화되었습니다. 이 값이 단위없이 지정되면 마이크로 초로 간주됩니다.Commit_Delay는 0입니다 (지연 없음). 적절한 수퍼 유행자 및 사용자 만SET권한은이 설정을 변경할 수 있습니다.

inPostgreSQL9.3 이전의 릴리스,Commit_Delay다르게 행동하고 훨씬 덜 효과적이었습니다. 모든 월 플러시보다는 커밋에만 영향을 미쳤으며 WAL 플러시가 더 빨리 완료 되더라도 구성된 전체 지연을 기다렸습니다. 시작PostgreSQL9.3, 구성된 구간을 대기 할 준비가 된 첫 번째 프로세스 인 후속 프로세스는 리더가 플러시 작업을 완료 할 때까지 대기합니다..

Commit_Siblings (Integer)

수행하기 전에 필요한 최소 동시 공개 트랜잭션 수Commit_Delay지연. 값이 커지면 지연 간격 동안 적어도 하나의 다른 트랜잭션이 커밋 할 준비가되어있을 가능성이 높습니다.

20.5.2. 검문소

Checkpoint_Timeout (Integer)

자동 WAL 체크 포인트 사이의 최대 시간. 이 값이 단위없이 지정되면 몇 초 만에 가져옵니다.5min). 이 매개 변수를 늘리면 충돌 복구에 필요한 시간이 증가 할 수 있습니다.on​​파일 또는 서버 명령 줄에.

Checkpoint_Completion_TARGET (플로팅 포인트)

체크 포인트 사이의 총 시간의 일부로 체크 포인트 완료 대상을 지정합니다. 기본값은 0.9로, 사용 가능한 거의 모든 간격에 걸쳐 체크 포인트를 확산시켜 상당히 일관된 I/O로드를 제공하는 동시에 체크 포인트 완료 오버 헤드를 유지합니다.on​​파일 또는 서버 명령 줄에.

Checkpoint_flush_after (Integer)

체크 포인트를 수행하는 동안이 양의 데이터가 작성 될 때마다 OS가 기본 스토리지에 이러한 글을 발행하도록 강제 시도하십시오. 그렇게하면 커널 페이지 캐시의 더러운 데이터의 양이 제한되어 시점의 가능성을 줄입니다.fsync는 체크 포인트의 끝토토 캔 또는 OS가 백그라운드토토 캔 더 큰 배치로 데이터를 다시 작성할 때 발행됩니다. 종종 트랜잭션 대기 시간이 크게 줄어들지 만, 특히보다 큰 워크로드가있는 경우도 있습니다.shared_buffers이지만 성능이 저하 될 수있는 OS의 페이지 캐시보다 작습니다. 이 설정은 일부 플랫폼에 영향을 미치지 않을 수 있습니다.blcksz바이트, 일반적으로 8kb. 유효한 범위는 사이입니다.0, 강제 쓰기 백을 비활성화하고2MB. 기본값은256KBOn Linux,0다른 곳. (만약에blcksz는 8KB가 아니며 기본 및 최대 값은 비례 적으로 비례합니다.)이 매개 변수는토토 캔만 설정할 수 있습니다on​​파일 또는 서버 명령 줄에.

Checkpoint_warning (Integer)

WAL 세그먼트 파일의 채우기로 인한 체크 포인트 가이 시간보다 가깝게 발생하는 경우 서버 로그에 메시지를 작성합니다 (max_wal_size제기해야합니다). 이 값이 단위없이 지정되면 몇 초 만에 가져옵니다.30S). 0은 경고를 비활성화합니다.Checkpoint_Timeout|Checkpoint_warning. 이 매개 변수는토토 캔만 설정할 수 있습니다.on​​파일 또는 서버 명령 줄에.

max_wal_size (Integer)

자동 체크 포인트 중에 WAL이 성장할 수있는 최대 크기. 이것은 소프트 한계입니다.max_wal_size무거운 부하, 실패와 같은 특별한 상황토토 캔archive_command또는archive_library또는 HighWal_Keep_Size설정. 이 값이 단위없이 지정되면 메가 바이트로 사용됩니다.on​​파일 또는 서버 명령 줄에.

min_wal_size (Integer)

WAL 디스크 사용 이이 설정 아래에 머무는 한 오래된 왈 파일은 항상 제거되지 않고 체크 포인트에서 향후 사용하기 위해 재활용됩니다. 예를 들어 대형 배치 작업을 실행할 때 WAL 사용의 스파이크를 처리하기에 충분한 웨일 스페이스가 예약되어 있는지 확인하는 데 사용할 수 있습니다.on​​파일 또는 서버 명령 줄에.

20.5.3. 아카이빙

archive_mode (enum)

언제archive_mode활성화되고 완성 된 월 세그먼트가 설정하여 아카이브 스토리지로 전송됩니다archive_command또는archive_library. 외에off, 비활성화하려면 두 가지 모드가 있습니다.on항상. 정상 작동 중에는 두 모드간에 차이가 없지만로 설정된 경우항상WAL Archiver는 아카이브 복구 또는 대기 모드 중에도 활성화되어 있습니다. 안에항상모드, 아카이브에서 복원되거나 스트리밍 복제로 스트리밍 된 모든 파일이 보관됩니다 (다시). 보다섹션 27.2.9자세한 내용.

archive_mode별도의 설정입니다archive_commandandarchive_library그래서archive_commandandarchive_library아카이빙 모드를 떠나지 않고 변경할 수 있습니다. 이 매개 변수는 서버 시작토토 캔만 설정할 수 있습니다.archive_modeWal_level로 설정되었습니다최소.

archive_command (String)

로컬 쉘 명령을 실행하여 완성 된 WAL 파일 세그먼트를 보관합니다. 어느%P문자열에서 파일의 경로 이름으로 아카이브로 대체됩니다.%f는 파일 이름 만 대체됩니다. (경로 이름은 서버의 작업 디렉토리, 즉 클러스터의 데이터 디렉토리와 관련이 있습니다.) 사용%%실제를 포함하려면%명령의 문자. 명령이 성공한 경우에만 제로 출구 상태를 반환하는 것이 중요합니다.섹션 26.3.1.

이 매개 변수는토토 캔만 설정할 수 있습니다on파일 또는 서버 명령 줄에. 이 아니라면 무시됩니다.archive_mode서버 시작 및토토 캔 활성화되었습니다.archive_library빈 문자열로 설정됩니다. 만약에archive_command빈 문자열 (기본값) whink입니다.archive_mode활성화되었습니다 (및archive_library| 빈 문자열로 설정되어 있습니다), WAL 아카이빙은 일시적으로 비활성화되었지만 서버는 곧 명령이 제공 될 것으로 예상하여 WAL 세그먼트 파일을 계속 누적합니다. 환경archive_command예를 들어 True를 반환하는 것 외에는 아무것도하지 않는 명령으로, 예를 들어/bin/true (remWindows에서)는 아카이브를 효과적으로 비활성화하지만 아카이브 복구에 필요한 왈 파일의 체인을 깨뜨 리므로 비정상적인 상황에서만 사용해야합니다..

archive_library (String)

완성 된 WAL 파일 세그먼트 아카이브에 사용할 라이브러리. 빈 문자열 (기본값)으로 설정하면 쉘을 통한 아카이브가 활성화되고archive_command사용됩니다. 그렇지 않으면 지정된 공유 라이브러리가 보관에 사용됩니다.섹션 26.3.1andPostgreSQL : 문서 : 15 : 51 장. 아카이브 롤 토토.

이 매개 변수는토토 캔만 설정할 수 있습니다on​​파일 또는 서버 명령 줄에.

archive_timeout (Integer)

archive_command또는archive_library완성 된 WAL 세그먼트에 대해서만 호출됩니다. 따라서 서버가 WAL 트래픽이 거의 없거나 (또는 ​​그 자체가있는 경우에도 느슨한 기간이있는 경우) 트랜잭션 완료와 아카이브 스토리지에서 안전한 기록 사이에 긴 지연이 발생할 수 있습니다.archive_timeout서버가 새 월 세그먼트 파일로 주기적으로 전환하도록 강제합니다. 이 매개 변수가 0보다 크면 서버는 마지막 세그먼트 파일 스위치 이후이 시간이 경과 할 때마다 새 세그먼트 파일로 전환되며 단일 체크 포인트를 포함하여 데이터베이스 활동이 있습니다 (데이터베이스 활동이없는 경우 체크 포인트가 건너 뜁니다).archive_timeout- 아카이브 스토리지를 팽창시킬 것입니다.archive_timeout1 분 정도의 설정은 일반적으로 합리적입니다. 데이터를 기본 서버보다 더 빨리 복사하려면 아카이브 대신 스트리밍 복제를 사용하는 것이 좋습니다.on​​파일 또는 서버 명령 줄에.

20.5.4. 회복

이 섹션은 일반적으로 복구에 적용되는 설정에 대해 설명합니다. 충돌 복구, 스트리밍 복제 및 아카이브 기반 복제에 영향을 미칩니다.

복구 _prefetch (enum)

복구 중에 아직 버퍼 풀에없는 WAL토토 캔 참조 된 블록을 프리 페치하려고할지 여부. 유효한 값은off, onandtry(기본값). 설정try운영 체제가 제공하는 경우에만 프리 페치 활성화posix_fadvise기능은 현재 프리 페치 구현에 사용됩니다. 일부 운영 체제는 기능을 제공하지만 아무것도하지 않습니다.

곧 필요한 프리 페치 블록은 일부 워크로드로 복구하는 동안 I/O 대기 시간을 줄일 수 있습니다. 참조 참조WAL_DECODE_BUFFER_SIZEandmaintending_io_concurrency사전 페치 활동을 제한하는 설정.

WAL_DECODE_BUFFER_SIZE (Integer)

서버가 WAL토토 캔 얼마나 멀리 볼 수 있는지에 대한 한도, 프리 페치의 블록을 찾으십시오. 이 값이 단위없이 지정되면 바이트로 사용됩니다.

20.5.5. 아카이브 복구

이 섹션에서는 복구 기간에만 적용되는 설정에 대해 설명합니다. 수행하려는 후속 복구에 대해서는 재설정해야합니다.

복구서버를 대기로 사용하거나 대상 복구를 실행하기 위해 커버됩니다. 일반적으로 대기 모드는 고 가용성 및/또는 읽기 확장 성을 제공하는 데 사용되는 반면, 대상 복구는 데이터 손실에서 복구하는 데 사용됩니다.

대기 모드토토 캔 서버를 시작하려면라는 파일을 만듭니다.and데이터 디렉토리에서. 서버가 복구에 들어가고 보관 된 WAL의 끝에 도달하면 복구를 중지하지 않지만에서 지정된대로 전송 서버에 연결하여 계속 복구를 계속하려고합니다.Primary_Conninfo새 월 세그먼트를 사용하여 설정 및/또는Restore_command. 이 모드의 경우이 섹션의 매개 변수 및섹션 20.6.3관심이 있습니다. 의 매개 변수섹션 20.5.6도 적용되지만 일반적 으로이 모드토토 캔는 유용하지 않습니다.

대상 복구 모드에서 서버를 시작하려면라는 파일을 만듭니다.recovery.signal데이터 디렉토리토토 캔. 둘 다andandrecovery.signal파일이 생성되고 대기 모드가 우선합니다. 대상 복구 모드는 보관 된 WAL이 완전히 재생 될 때 또는복구 _target도달했습니다. 이 모드토토 캔는이 섹션과의 매개 변수입니다.섹션 20.5.6사용됩니다.

Restore_command (String)

WAL 파일 시리즈의 보관 된 세그먼트를 검색하기 위해 실행하는 로컬 쉘 명령. 이 매개 변수는 아카이브 복구에 필요하지만 스트리밍 복제를위한 선택 사항입니다.%f문자열에서 아카이브에서 검색 할 파일 이름으로 대체됩니다.%P서버의 복사 대상 경로 이름으로 대체됩니다. (경로 이름은 현재 작업 디렉토리, 즉 클러스터의 데이터 디렉토리와 관련이 있습니다.)%r마지막으로 유효한 재시작 지점이 포함 된 파일 이름으로 대체됩니다. 이는 복원을 다시 시작할 수 있도록 유지 해야하는 최초의 파일 이므로이 정보를 사용하여 현재 복원에서 다시 시작하는 데 필요한 최소 값으로 아카이브를 자료화 할 수 있습니다..%r일반적으로 따뜻한 스탠드 구성에 의해서만 사용됩니다 (참조섹션 27.2). 쓰다%%실제를 포함하려면%문자.

명령이 성공한 경우에만 제로 출구 상태를 반환하는 것이 중요합니다. 명령Will아카이브에없는 파일 이름을 요청 받으십시오. 그렇게 요청하면 0이 아닌 반환해야합니다.

Restore_command = 'CP/Mnt/Server/ArchivedIR/%F "%P"'

명령이 신호에 의해 종료 된 경우 (.Sigterm, 데이터베이스 서버 종료의 일부로 사용되는 47636_47803 |) 또는 쉘의 오류 (예 : 명령을 찾을 수없는 명령) 오류가 발생하면 복구가 중단되고 서버가 시작되지 않습니다..

이 매개 변수는토토 캔만 설정할 수 있습니다on​​파일 또는 서버 명령 줄에.

archive_cleanup_command (String)

이 선택적 매개 변수는 모든 재시작 지점토토 캔 실행될 쉘 명령을 지정합니다. 의 목적archive_cleanup_command|는 더 이상 대기 서버에서 필요하지 않은 오래된 아카이브 된 월 파일을 정리하는 메커니즘을 제공하는 것입니다. 어느%r마지막으로 유효한 재시작 지점이 포함 된 파일 이름으로 대체됩니다. 그것이 가장 빠른 파일입니다유지복원을 다시 시작할 수 있도록하려면보다 일찍 모든 파일%r안전하게 제거 될 수 있습니다. 이 정보는 현재 복원에서 다시 시작하는 데 필요한 최소 값으로 아카이브를 자르기 위해 사용될 수 있습니다.PG_ARCHIVECLEANUP모듈은 종종archive_cleanup_command단일 스탠드 구성의 경우 : 예 :

archive_cleanup_command = 'pg_archivecleanup/mnt/server/archivedir %r'

그러나 여러 대기 서버가 동일한 아카이브 디렉토리에서 복원하는 경우 서버가 더 이상 필요하지 않을 때까지 책치 파일이 삭제되지 않도록해야합니다..archive_cleanup_command일반적으로 따뜻한 스탠드 구성에 사용됩니다 (참조섹션 27.2). 쓰다%%실제를 포함하려면%명령의 문자.

명령이 0이 아닌 출구 상태를 반환하면 경고 로그 메시지가 작성됩니다. 명령이 신호 또는 쉘에 의해 오류에 의해 종료 된 경우 (예 : 명령을 찾을 수 없음) 치명적인 오류가 발생한다는 것입니다..

이 매개 변수는토토 캔만 설정할 수 있습니다on​​파일 또는 서버 명령 줄에.

복구 _end_command (String)

이 매개 변수는 복구 종료시에만 한 번만 실행될 쉘 명령을 지정합니다. 이 매개 변수는 선택 사항입니다.복구 _end_command는 복제 또는 복구 후 청소를위한 메커니즘을 제공하는 것입니다. 어느%rin과 같이 마지막으로 유효한 재시작 지점을 포함하는 파일의 이름으로 대체됩니다archive_cleanup_command.

명령이 0이 아닌 출구 상태를 반환하면 경고 로그 메시지가 작성되고 데이터베이스가 어쨌든 시작됩니다. 예외적으로 명령이 신호 또는 쉘에 의해 오류 (예 : 명령을 찾을 수 없음)에 의해 종료되면 데이터베이스는 시작을 진행하지 않습니다..

이 매개 변수는토토 캔만 설정할 수 있습니다on​​파일 또는 서버 명령 줄에.

20.5.6. 회복 목표

기본적으로 복구는 WAL 로그의 끝까지 복구됩니다. 다음 매개 변수를 사용하여 이전 중지점을 지정할 수 있습니다.복구 _target, 복구 _target_lsn, 복구 _target_name, 복구 _target_time또는복구 _target_xid사용될 수 있습니다. 구성 파일 에이 중 하나 이상이 지정되면 오류가 발생합니다.

복구 _target = '즉시'

이 매개 변수는 일관된 상태에 도달하자마자 복구가 종료되어야한다고 지정합니다. 온라인 백업에서 복원 할 때, 이것은 백업을 취하는 지점을 의미합니다.

기술적으로 이것은 문자열 매개 변수이지만'즉시'현재 유일하게 허용되는 값입니다.

복구 _target_name (String)

이 매개 변수는 명명 된 복원 지점을 지정합니다 (pg_create_restore_point ()) 복구가 진행되는지

복구 _target_time (타임 스탬프)

이 매개 변수는 복구가 진행되는 시간 스탬프를 지정합니다. 정확한 정지 지점도의 영향을받습니다.복구 _target_inclusive.

이 매개 변수의 값은 타임 스탬프입니다.시간대가있는 타임 스탬프시간대 약어를 사용할 수없는 경우를 제외하고 데이터 유형 (Timezone_abbriations변수는 구성 파일에서 더 일찍 설정되었습니다). 선호하는 스타일은 UTC에서 숫자 오프셋을 사용하는 것입니다. 그렇지 않으면 풀 타임 존 이름 (예 :를 쓸 수 있습니다.Europe/Helsinkinoteest.

복구 _target_xid (String)

이 매개 변수는 복구가 진행될 트랜잭션 ID를 지정합니다. 트랜잭션 시작시 트랜잭션 ID는 순차적으로 할당되지만 트랜잭션은 다른 숫자 순서로 완료 될 수 있습니다.복구 _target_inclusive.

복구 _target_lsn (PG_LSN)

이 매개 변수는 복구가 진행되는 쓰기 로그 위치의 LSN을 지정합니다. 정확한 정지 지점도의 영향을받습니다.복구 _target_inclusive. 이 매개 변수는 시스템 데이터 유형을 사용하여 구문 분석PG_LSN.

다음 옵션은 복구 목표를 더 지정하고 대상에 도달 할 때 발생하는 일에 영향을 미칩니다.

복구 _target_inclusive (부울)

지정된 복구 대상 직후 중지 여부를 지정합니다 (on) 또는 복구 대상 바로 앞 (off). 에 적용복구 _target_lsn, 복구 _target_time또는복구 _target_xid지정되어 있습니다. 이 설정은 대상 WAL 위치 (LSN), 커밋 시간 또는 트랜잭션 ID를 갖는 트랜잭션이 복구에 포함되어 있는지 여부를 제어합니다.on.

복구 _target_timeline (String)

특정 타임 라인으로 복구를 지정합니다. 값은 숫자 타임 라인 ID 또는 특수 값일 수 있습니다.current베이스 백업을 할 때와 동일한 타임 라인을 따라 복구됩니다. 값최신대기 서버에 유용한 아카이브에있는 최신 타임 라인으로 복구됩니다.최신기본값입니다.

일반적 으로이 매개 변수를 복잡한 재구성 상황에서만 설정하면됩니다. 보다섹션 26.3.5토론을 위해.

복구 _target_action (enum)

복구 대상에 도달하면 서버가 취해야 할 조치를 지정합니다. 기본값은일시 정지, 이는 회복이 일시 중지된다는 것을 의미합니다.홍보는 복구 프로세스가 완료되고 서버가 연결을 수락하기 시작합니다. 마지막으로셧다운복구 대상에 도달 한 후 서버를 중지합니다.

의도 된 사용일시 정지설정은 데이터베이스에 대해 쿼리를 실행 하여이 복구 대상이 복구에 가장 바람직한 지점인지 확인하는 것입니다. 일시 정지 상태는 사용하여 재개 될 수 있습니다PG_WAL_REPLAY_RESUME ()(참조표 9.91), 이로 인해 회복이 끝납니다. 이 복구 대상이 원하는 중지점이 아닌 경우 서버를 종료하고 복구 대상 설정을 이후 대상으로 변경하고 다시 시작하여 복구를 계속하십시오.

셧다운설정은 정확한 재생 지점에서 인스턴스를 준비하는 데 유용합니다. 인스턴스는 여전히 더 많은 WAL 레코드를 재생할 수 있습니다 (실제로 다음에 시작될 때 마지막 체크 포인트 이후 WAL 레코드를 재생해야합니다)..

recovery.signal복구 _target_action로 설정되었습니다셧다운recovery.signal파일이 수동으로 제거됩니다.

이 설정은 복구 대상이 설정되지 않은 경우 효과가 없습니다. 만약에hot_standby활성화되지 않았으며 설정 설정일시 정지셧다운. 프로모션이 진행되는 동안 복구 목표에 도달하면 설정 설정일시 정지홍보.

어쨌든 복구 대상이 구성되었지만 대상에 도달하기 전에 아카이브 복구가 종료되면 서버는 치명적인 오류로 종료됩니다..

수정 제출

문서에 올바르지 않은 내용이 있으면 일치하지 않습니다.이 양식문서 문제를보고하려면