이 설정 조정에 대한 추가 정보는 다음을 참조하세요.PostgreSQL : 문서 : 13 : 29.4. 롤 토토 구성.
wal_level (110PostgreSQL: 문서: 13: 19.5. 미리 쓰기 로그49) wal_levelWAL에 기록되는 정보의 양을 결정합니다. 기본값은복제본, 대기 서버에서 읽기 전용 쿼리 실행을 포함하여 WAL 보관 및 복제를 지원하기에 충분한 데이터를 작성합니다.최소충돌 또는 즉각적인 종료로부터 복구하는 데 필요한 정보를 제외한 모든 로깅을 제거합니다. 마지막으로,논리적논리적 디코딩을 지원하는 데 필요한 정보를 추가합니다. 각 수준에는 모든 하위 수준에서 기록된 정보가 포함됩니다. 이 매개변수는 서버 시작 시에만 설정할 수 있습니다.
그최소레벨은 최소한의 WAL 볼륨을 생성합니다. 이를 생성하거나 다시 쓰는 트랜잭션의 영구 관계에 대한 행 정보는 기록되지 않습니다. 이렇게 하면 작업이 훨씬 빨라질 수 있습니다(참조섹션 14.4.7). 이 최적화를 시작하는 작업은 다음과 같습니다.
변경 ... 테이블스페이스 설정 |
클러스터 |
테이블 생성 |
구체화된 보기 새로고침(없이동시) |
REINDEX |
잘라내기 |
그러나 최소 WAL에는 기본 백업 및 WAL 로그에서 데이터를 재구성할 만큼 충분한 정보가 포함되어 있지 않으므로복제본13152_13203archive_mode) 및 스트리밍 복제.
에논리적레벨, 와 동일한 정보가 기록됩니다.복제본및 WAL에서 논리적 변경 세트를 추출하는 데 필요한 정보. 수준을 사용하여논리적특히 많은 테이블이 구성된 경우 WAL 볼륨이 증가합니다.복제본 ID 전체그리고 다수업데이트그리고삭제문이 실행됩니다.
9.6 이전 릴리스에서는 이 매개변수가 다음 값도 허용했습니다.아카이브그리고hot_standby. 이는 여전히 허용되지만 다음에 매핑됩니다.복제본.
fsync (부울) 이 매개변수가 켜져 있으면,PostgreSQL서버는 다음을 실행하여 업데이트가 물리적으로 디스크에 기록되도록 시도합니다.fsync()시스템 호출 또는 다양한 동등한 방법(참조wal_sync_method). 이렇게 하면 운영 체제 또는 하드웨어 충돌 후 데이터베이스 클러스터가 일관된 상태로 복구될 수 있습니다.
끄는 동안fsync은 종종 성능상의 이점을 제공하므로 정전이나 시스템 충돌 시 복구할 수 없는 데이터 손상이 발생할 수 있습니다. 따라서 끄는 것이 좋습니다.fsync외부 데이터젠 토토 전체 데이터베이스를 쉽게 다시 만들 수 있다면.
전원을 꺼도 안전한 상황의 예fsync백업 파일에서 새 데이터베이스 클러스터의 초기 로드를 포함합니다. 데이터 배치를 처리한 후 데이터베이스를 버리고 다시 생성하거나 자주 다시 생성되고 장애 조치에 사용되지 않는 읽기 전용 데이터베이스 복제를 위해 데이터베이스 클러스터를 사용합니다. 고품질 하드웨어만으로는 전원을 끌 충분한 근거가 되지 않습니다.fsync.
변경 시 안정적인 복구를 위해fsyncoff에서 on으로 전환하려면 커널의 모든 수정된 버퍼를 내구성 있는 저장소로 강제 설정해야 합니다. 이는 클러스터가 종료되는 동안 또는 동안 수행될 수 있습니다.fsync실행하여 켜짐initdb --sync-only, 실행 중동기화, 파일 시스템 마운트 해제 또는 서버 재부팅.
많은 상황젠 토토 꺼짐동기_커밋중요하지 않은 트랜잭션의 경우 끄면 성능상의 많은 이점을 얻을 수 있습니다.fsync, 데이터 손상 위험 없이.
fsync다음에서만 설정할 수 있습니다.postgresql.conf파일 또는 서버 명령줄젠 토토. 이 매개변수를 끄는 경우 끄는 것도 고려해 보세요.full_page_writes.
동기_커밋 (열거형) 데이터베이스 서버가 a를 반환하기 전에 WAL 처리가 얼마나 완료되어야 하는지 지정합니다.“성공”클라이언트에 표시됩니다. 유효한 값은 다음과 같습니다.remote_apply, 켜짐(기본값),remote_write, 현지및꺼짐.
만약synchronous_standby_names비어 있습니다. 의미 있는 유일한 설정은 다음과 같습니다.켜짐그리고꺼짐; remote_apply, remote_write그리고현지모두와 동일한 로컬 동기화 수준을 제공켜짐. 모든 비-의 로컬 동작꺼짐모드는 WAL의 로컬 플러시를 디스크로 기다리는 것입니다. 젠 토토꺼짐모드에서는 대기 시간이 없으므로 성공이 클라이언트에 보고되는 시점과 나중에 트랜잭션이 서버 충돌로부터 안전하다고 보장되는 시점 사이에 지연이 있을 수 있습니다. (최대 지연 시간은 3회입니다.wal_writer_delay.) 달리fsync, 이 매개변수를로 설정꺼짐데이터베이스 불일치 위험이 발생하지 않습니다. 운영 체제 또는 데이터베이스 충돌로 인해 최근에 커밋된 일부 트랜잭션이 손실될 수 있지만 데이터베이스 상태는 해당 트랜잭션이 완전히 중단된 것처럼 동일합니다. 그래서 돌아서서동기_커밋off는 트랜잭션 내구성에 대한 정확한 확실성보다 성능이 더 중요한 경우 유용한 대안이 될 수 있습니다. 자세한 내용은 참조PostgreSQL : 문서 : 13 : 29.3. 비동기 롤 토토.
만약synchronous_standby_names비어 있지 않습니다.동기_커밋또한 트랜잭션 커밋이 WAL 레코드가 대기 서버젠 토토 처리될 때까지 기다릴지 여부를 제어합니다.
다음으로 설정된 경우remote_apply, 커밋은 현재 동기 대기의 응답이 트랜잭션의 커밋 레코드를 수신하여 적용했음을 나타낼 때까지 대기합니다. 따라서 대기의 쿼리에 표시되고 대기의 내구성 있는 저장소에도 기록됩니다. 이는 WAL 재생을 기다리기 때문에 이전 설정보다 훨씬 더 큰 커밋 지연을 발생시킵니다. 으로 설정된 경우켜짐, 커밋은 현재 동기 대기의 응답이 트랜잭션의 커밋 레코드를 수신하여 내구성 있는 스토리지에 플러시했음을 나타낼 때까지 기다립니다. 이렇게 하면 기본 및 모든 동기 대기 모두 데이터베이스 스토리지가 손상되지 않는 한 트랜잭션이 손실되지 않습니다. 으로 설정된 경우remote_write, 커밋은 현재 동기 대기의 응답이 트랜잭션의 커밋 레코드를 수신하여 파일 시스템에 기록했음을 나타낼 때까지 기다립니다. 이 설정은 대기 인스턴스가 있는 경우 데이터 보존을 보장합니다.PostgreSQL충돌이 발생하지만, 데이터가 대기의 내구성 있는 저장소에 반드시 도달한 것은 아니기 때문에 대기젠 토토 운영 체제 수준의 충돌이 발생하는 경우에는 발생하지 않습니다. 설정현지커밋이 디스크에 대한 로컬 플러시를 기다리지만 복제는 기다리지 않습니다. 이는 일반적으로 동기 복제를 사용하는 경우 바람직하지 않지만 완전성을 위해 제공됩니다.
이 매개변수는 언제든지 변경될 수 있습니다. 하나의 트랜잭션에 대한 동작은 커밋할 때 적용되는 설정에 따라 결정됩니다. 따라서 일부 트랜잭션은 동기식으로 커밋하고 다른 트랜잭션은 비동기식으로 커밋하는 것이 가능하고 유용합니다. 예를 들어, 기본값이 반대일 때 단일 다중 문 트랜잭션 커밋을 비동기식으로 만들려면 issue로컬 동기_커밋을 끄기로 설정트랜잭션 내젠 토토.
표 19.1의 기능을 요약합니다.동기_커밋설정.
표 19.1. synchronous_commit 모드
| synchronous_commit 설정 | 로컬 내구성 커밋 | PG 충돌 후 대기 내구성 커밋 | OS 충돌 후 대기 내구성 커밋 | 대기 쿼리 일관성 |
|---|---|---|---|---|
| remote_apply | • | • | • | • |
| 켜짐 | • | • | • | |
| remote_write | • | • | ||
| 현지 | • | |||
| 꺼짐 |
wal_sync_method (열거형) WAL 업데이트를 디스크로 강제 실행하는 데 사용되는 방법. 만일fsync이 꺼져 있으면 WAL 파일 업데이트가 전혀 강제로 실행되지 않으므로 이 설정은 관련이 없습니다. 가능한 값은 다음과 같습니다:
open_datasync(WAL 파일 쓰기열기()옵션O_DSYNC)
fdatasync(전화fdatasync()각 커밋젠 토토)
fsync(전화fsync()각 커밋젠 토토)
fsync_writethrough(전화fsync()커밋할 때마다 디스크 쓰기 캐시를 강제로 기록)
open_sync(WAL 파일 쓰기열기()옵션O_SYNC)
그open_* 옵션도 사용됨O_DIRECT사용 가능한 경우. 모든 플랫폼에서 이러한 선택 사항을 모두 사용할 수 있는 것은 아닙니다. 기본값은 플랫폼에서 지원하는 위 목록의 첫 번째 메서드입니다. 단, 다음과 같습니다.fdatasync은 Linux 및 FreeBSD의 기본값입니다. 기본값이 반드시 이상적인 것은 아닙니다. 충돌로부터 안전한 구성을 만들거나 최적의 성능을 얻으려면 이 설정이나 시스템 구성의 다른 측면을 변경해야 할 수도 있습니다. 이러한 측면은 다음에서 논의됩니다.토토 사이트 추천 PostgreSQL : 문서 : 13 : 29.1. 신뢰할 수 있음. 이 매개변수는젠 토토만 설정할 수 있습니다.postgresql.conf파일 또는 서버 명령줄젠 토토.
full_page_writes (부울) 이 매개변수가 켜져 있으면,PostgreSQL서버는 체크포인트 이후 해당 페이지를 처음 수정하는 동안 각 디스크 페이지의 전체 내용을 WAL에 기록합니다. 이는 운영 체제 충돌 중에 진행 중인 페이지 쓰기가 부분적으로만 완료되어 이전 데이터와 새 데이터가 혼합되어 있는 온디스크 페이지로 이어질 수 있기 때문에 필요합니다. 일반적으로 WAL에 저장되는 행 수준 변경 데이터는 충돌 후 복구 중에 해당 페이지를 완전히 복원하는 데 충분하지 않습니다. 전체 페이지 이미지를 저장하면 페이지가 올바르게 복원될 수 있지만 WAL에 기록해야 하는 데이터 양이 늘어나는 대가를 치르게 됩니다. (WAL 재생은 항상 체크포인트에서 시작되므로 체크포인트 이후 각 페이지의 첫 번째 변경 중에 이 작업을 수행하는 것으로 충분합니다. 따라서 전체 페이지 쓰기 비용을 줄이는 한 가지 방법은 체크포인트 간격 매개변수를 늘리는 것입니다.)
이 매개변수를 끄면 일반 작동 속도가 빨라지지만 시스템 오류 후 복구할 수 없는 데이터 손상이나 자동 데이터 손상이 발생할 수 있습니다. 위험은 전원을 끄는 것과 유사합니다.fsync, 크기는 작지만 해당 매개변수에 권장되는 것과 동일한 상황에 따라서만 꺼야 합니다.
이 매개변수를 꺼도 특정 시점 복구(PITR)를 위한 WAL 아카이브 사용에 영향을 미치지 않습니다(참조롤 토토 PostgreSQL : 문서 : 13 : 25.3. 연속 보관 및 시점 복구 (PITR)).
이 매개변수는 다음에서만 설정할 수 있습니다.postgresql.conf파일 또는 서버 명령줄젠 토토. 기본값은켜짐.
wal_log_hints (부울) 이 매개변수가 다음과 같은 경우켜짐, 그PostgreSQL서버는 체크포인트 이후 해당 페이지를 처음 수정하는 동안 각 디스크 페이지의 전체 콘텐츠를 WAL에 기록합니다. 소위 힌트 비트의 중요하지 않은 수정의 경우에도 마찬가지입니다.
데이터 체크섬이 활성화되면 힌트 비트 업데이트는 항상 WAL에 기록되며 이 설정은 무시됩니다. 이 설정을 사용하면 데이터베이스에 데이터 체크섬이 활성화된 경우 추가 WAL 로깅이 얼마나 발생하는지 테스트할 수 있습니다.
이 매개변수는 서버 시작시에만 설정할 수 있습니다. 기본값은꺼짐.
wal_compression (부울) 이 매개변수가 다음과 같은 경우켜짐, 그PostgreSQL서버는 다음과 같은 경우에 WAL에 기록된 전체 페이지 이미지를 압축합니다.full_page_writes기본 백업이 켜져 있거나 진행 중입니다. 압축된 페이지 이미지는 WAL 재생 중에 압축이 풀립니다. 기본값은꺼짐. 슈퍼유저만 이 설정을 변경할 수 있습니다.
이 매개변수를 켜면 복구할 수 없는 데이터 손상 위험을 증가시키지 않고 WAL 볼륨을 줄일 수 있지만 WAL 로깅 중 압축 및 WAL 재생 중 압축 해제에 추가 CPU가 소비됩니다.
wal_init_zero (부울) 다음으로 설정된 경우켜짐(기본값), 이 옵션을 사용하면 새 WAL 파일이 0으로 채워집니다. 일부 파일 시스템에서는 WAL 레코드를 작성하기 전에 공간이 할당되도록 보장합니다. 그러나기록 시 복사(COW) 파일 시스템은 이 기술의 이점을 얻지 못할 수 있으므로 불필요한 작업을 건너뛰는 옵션이 제공됩니다. 으로 설정된 경우꺼짐, 파일이 생성될 때 최종 바이트만 기록되어 예상 크기를 갖습니다.
wal_recycle (부울) 다음으로 설정된 경우켜짐(기본값), 이 옵션을 사용하면 WAL 파일의 이름을 변경하여 재활용할 수 있으므로 새 파일을 생성할 필요가 없습니다. COW 파일 시스템에서는 새 파일 시스템을 만드는 것이 더 빠를 수 있으므로 이 동작을 비활성화하는 옵션이 제공됩니다.
wal_buffers (정수) 아직 디스크에 기록되지 않은 WAL 데이터에 사용되는 공유 메모리의 양. -1의 기본 설정은 1/32(약 3%)에 해당하는 크기를 선택합니다.shared_buffers, 그러나 그 이상64kB일반적으로 하나의 WAL 세그먼트 크기를 초과하지 않습니다.16MB. 자동 선택이 너무 크거나 작은 경우 이 값을 수동으로 설정할 수 있지만 양수 값은 다음보다 작습니다.32kB다음과 같이 취급됩니다32kB. 이 값을 단위 없이 지정하면 WAL 블록으로 간주됩니다. 즉,XLOG_BLCKSZ바이트, 일반적으로 8kB. 이 매개변수는 서버 시작 시에만 설정할 수 있습니다.
WAL 버퍼의 내용은 매 트랜잭션 커밋마다 디스크에 기록되므로 매우 큰 값은 큰 이점을 제공할 가능성이 낮습니다. 그러나 이 값을 최소한 몇 메가바이트로 설정하면 많은 클라이언트가 동시에 커밋하는 사용량이 많은 서버에서 쓰기 성능을 향상시킬 수 있습니다. 기본 설정인 -1로 선택된 자동 조정은 대부분의 경우 합리적인 결과를 제공합니다.
wal_writer_delay (정수) WAL 작성자가 WAL을 플러시하는 빈도를 시간 단위로 지정합니다. WAL을 플러시한 후 작성자는 다음과 같이 지정된 시간 동안 잠을 잔다.wal_writer_delay, 비동기식 커밋 트랜잭션으로 더 빨리 깨어나지 않는 한. 마지막 플러시가 다음보다 적게 발생한 경우wal_writer_delay이전 및 미만wal_writer_flush_after33682_33904200ms). 많은 시스템에서 절전 지연의 효과적인 해결 방법은 10밀리초입니다. 설정wal_writer_delay10의 배수가 아닌 값에 대한 값은 다음으로 높은 10의 배수로 설정하는 것과 동일한 결과를 가질 수 있습니다. 이 매개변수는postgresql.conf파일 또는 서버 명령줄젠 토토.
wal_writer_flush_after (정수) WAL 작성자가 WAL을 플러시하는 빈도를 볼륨 기준으로 지정합니다. 마지막 플러시가 다음보다 적게 발생한 경우wal_writer_delay이전 및 미만wal_writer_flush_after34824_34939wal_writer_flush_after다음으로 설정됨0그러면 WAL 데이터는 항상 즉시 플러시됩니다. 이 값을 단위 없이 지정하면 WAL 블록으로 간주됩니다. 즉,XLOG_BLCKSZ바이트, 일반적으로 8kB. 기본값은1MB. 이 매개변수는젠 토토만 설정할 수 있습니다.postgresql.conf파일 또는 서버 명령줄젠 토토.
wal_skip_threshold (정수) 언제wal_level이다최소그리고 영구 관계를 생성하거나 다시 작성한 후 트랜잭션이 커밋되며, 이 설정은 새 데이터를 유지하는 방법을 결정합니다. 데이터가 이 설정보다 작으면 WAL 로그에 기록합니다. 그렇지 않으면 영향을 받는 파일의 fsync를 사용하십시오. 스토리지 속성에 따라 해당 커밋으로 인해 동시 트랜잭션 속도가 느려지는 경우 이 값을 높이거나 낮추는 것이 도움이 될 수 있습니다. 이 값을 단위 없이 지정하면 킬로바이트로 간주됩니다. 기본값은 2MB입니다(2MB).
commit_delay (정수) 설정commit_delayWAL 플러시가 시작되기 전에 시간 지연을 추가합니다. 이는 시스템 부하가 충분히 높아 주어진 간격 내에 추가 트랜잭션을 커밋할 준비가 되는 경우 단일 WAL 플러시를 통해 더 많은 수의 트랜잭션이 커밋되도록 허용하여 그룹 커밋 처리량을 향상시킬 수 있습니다. 그러나 지연 시간도 최대로 늘어납니다.commit_delay각 WAL 플러시에 대해. 커밋할 준비가 된 다른 트랜잭션이 없으면 지연은 낭비되기 때문에 지연은 최소한 다음 경우에만 수행됩니다.commit_siblings플러시가 시작되려고 할 때 다른 트랜잭션이 활성화됩니다. 또한 다음과 같은 경우에는 지연이 수행되지 않습니다.fsync비활성화되었습니다. 이 값을 단위 없이 지정하면 마이크로초로 간주됩니다. 기본값commit_delay은 0입니다(지연 없음). 슈퍼유저만 이 설정을 변경할 수 있습니다.
에PostgreSQL9.3 이전 릴리스,commit_delay다르게 행동하고 훨씬 덜 효과적이었습니다. 모든 WAL 플러시가 아닌 커밋에만 영향을 주며 WAL 플러시가 더 빨리 완료되더라도 구성된 전체 지연을 기다렸습니다. 다음에서 시작됨PostgreSQL9.3, 플러시 준비가 된 첫 번째 프로세스는 구성된 간격 동안 기다리는 반면 후속 프로세스는 리더가 플러시 작업을 완료할 때까지만 기다립니다.
commit_siblings (정수) 다음을 수행하기 전에 필요한 동시 열린 트랜잭션의 최소 수commit_delay지연. 값이 클수록 지연 간격 동안 하나 이상의 다른 트랜잭션이 커밋 준비가 될 가능성이 높아집니다. 기본값은 5개의 트랜잭션입니다.
checkpoint_timeout (정수) 자동 WAL 체크포인트 사이의 최대 시간. 이 값을 단위 없이 지정하면 초로 간주됩니다. 유효한 범위는 30초젠 토토 1일 사이입니다. 기본값은 5분입니다(5분). 이 매개변수를 늘리면 응급 복구에 필요한 시간이 늘어날 수 있습니다. 이 매개변수는젠 토토만 설정할 수 있습니다.postgresql.conf파일 또는 서버 명령줄젠 토토.
checkpoint_completion_target (부동 소수점) 체크포인트 사이의 총 시간의 일부로 체크포인트 완료 목표를 지정합니다. 기본값은 0.5입니다. 이 매개변수는젠 토토만 설정할 수 있습니다.postgresql.conf파일 또는 서버 명령줄젠 토토.
checkpoint_flush_after (정수) 체크포인트를 수행하는 동안 이 양 이상의 데이터가 기록될 때마다 OS가 기본 저장소에 이러한 쓰기를 실행하도록 강제로 시도하십시오. 그렇게 하면 커널 페이지 캐시에 있는 더티 데이터의 양이 제한되어 다음과 같은 경우 중단 가능성이 줄어듭니다.fsync은 체크포인트가 끝날 때 또는 OS가 백그라운드에서 더 큰 배치로 데이터를 다시 쓸 때 발행됩니다. 이로 인해 트랜잭션 지연 시간이 크게 단축되는 경우가 많지만, 특히 워크로드가 다음보다 큰 경우도 있습니다.shared_buffers, 그러나 OS의 페이지 캐시보다 작으므로 성능이 저하될 수 있습니다. 이 설정은 일부 플랫폼에는 영향을 미치지 않을 수 있습니다. 이 값을 단위 없이 지정하면 블록으로 간주됩니다. 즉,BLCKSZ바이트, 일반적으로 8kB. 유효한 범위는 다음 사이입니다.041392_414332MB. 기본값은256kB리눅스의 경우,0다른 곳에. (만약BLCKSZ은 8kB가 아니며 기본값과 최대값은 이에 비례하여 확장됩니다.) 이 매개변수는postgresql.conf파일 또는 서버 명령줄젠 토토.
체크포인트_경고 (정수) WAL 세그먼트 파일 채우기로 인한 체크포인트가 이 시간보다 더 가깝게 발생하면 서버 로그에 메시지를 기록합니다(이는 다음을 의미합니다.max_wal_size올려져야 합니다). 이 값을 단위 없이 지정하면 초로 간주됩니다. 기본값은 30초입니다(30초). 0은 경고를 비활성화합니다. 다음과 같은 경우 경고가 생성되지 않습니다.checkpoint_timeout다음보다 작음체크포인트_경고. 이 매개변수는젠 토토만 설정할 수 있습니다.postgresql.conf파일 또는 서버 명령줄젠 토토.
max_wal_size (정수) 자동 체크포인트 중 WAL이 커질 수 있는 최대 크기입니다. 이는 소프트 한도입니다. WAL 크기는 초과할 수 있습니다.max_wal_size과중한 부하, 고장과 같은 특별한 상황젠 토토archive_command또는 높음wal_keep_size설정. 이 값을 단위 없이 지정하면 메가바이트로 간주됩니다. 기본값은 1GB입니다. 이 매개변수를 늘리면 응급 복구에 필요한 시간이 늘어날 수 있습니다. 이 매개변수는젠 토토만 설정할 수 있습니다.postgresql.conf파일 또는 서버 명령줄젠 토토.
min_wal_size (정수) WAL 디스크 사용량이 이 설정 이하로 유지되는 한, 오래된 WAL 파일은 제거되지 않고 체크포인트에서 향후 사용을 위해 항상 재활용됩니다. 이는 예를 들어 대규모 배치 작업을 실행할 때 WAL 사용량 급증을 처리하기 위해 충분한 WAL 공간이 예약되어 있는지 확인하는 데 사용할 수 있습니다. 이 값을 단위 없이 지정하면 메가바이트로 간주됩니다. 기본값은 80MB입니다. 이 매개변수는젠 토토만 설정할 수 있습니다.postgresql.conf파일 또는 서버 명령줄젠 토토.
아카이브_모드 (열거형) 언제아카이브_모드활성화되면 완료된 WAL 세그먼트가 설정에 따라 아카이브 저장소로 전송됩니다.archive_command. 게다가꺼짐, 비활성화하려면 다음 두 가지 모드가 있습니다.켜짐및항상. 정상 작동 중에는 두 모드 사이에 차이가 없으나, 로 설정하면항상WAL 아카이버는 아카이브 복구 또는 대기 모드 중에도 활성화됩니다. 에서항상모드에서는 아카이브에서 복원되거나 스트리밍 복제로 스트리밍된 모든 파일이 (다시) 아카이브됩니다. 참조섹션 26.2.9자세한 내용은.
아카이브_모드그리고archive_command별도의 변수이므로archive_command보관 모드를 종료하지 않고도 변경할 수 있습니다. 이 매개변수는 서버 시작 시에만 설정할 수 있습니다.아카이브_모드다음의 경우 활성화할 수 없습니다.wal_level다음으로 설정됨최소.
archive_command (문자열) 완성된 WAL 파일 세그먼트를 아카이브하기 위해 실행하는 로컬 쉘 명령입니다. 모두%p문자열은 아카이브할 파일의 경로 이름으로 대체되며 임의%f은 파일 이름으로만 대체됩니다. (경로 이름은 서버의 작업 디렉터리, 즉 클러스터의 데이터 디렉터리를 기준으로 합니다.) 사용%%실제 내용 삽입%명령의 문자입니다. 명령이 성공한 경우에만 0 종료 상태를 반환하는 것이 중요합니다. 자세한 내용은 참조섹션 25.3.1.
이 매개변수는 다음에서만 설정할 수 있습니다.postgresql.conf파일 또는 서버 명령줄젠 토토. 다음이 아니면 무시됩니다.아카이브_모드서버 시작 시 활성화되었습니다. 만일archive_command은 빈 문자열(기본값)이고아카이브_모드이 활성화되고 WAL 보관이 일시적으로 비활성화되지만 서버는 명령이 곧 제공될 것이라는 기대로 WAL 세그먼트 파일을 계속 축적합니다. 설정archive_command아무것도 하지 않고 true를 반환하는 명령으로, 예를 들어,/bin/true (REMWindows의 경우) 효과적으로 아카이브를 비활성화하지만 아카이브 복구에 필요한 WAL 파일 체인을 중단하므로 비정상적인 상황에서만 사용해야 합니다.
archive_timeout (정수) 그archive_command은 완료된 WAL 세그먼트에 대해서만 호출됩니다. 따라서 서버가 WAL 트래픽을 거의 생성하지 않는 경우(또는 트래픽이 발생하는 여유 기간이 있는 경우) 트랜잭션 완료와 아카이브 저장소에 안전하게 기록되는 데 오랜 지연이 있을 수 있습니다. 보관되지 않은 데이터의 기간을 제한하려면 다음을 설정할 수 있습니다.archive_timeout서버가 주기적으로 새로운 WAL 세그먼트 파일로 전환하도록 강제합니다. 이 매개변수가 0보다 크면 서버는 마지막 세그먼트 파일 전환 이후 이 시간이 경과하고 단일 체크포인트를 포함한 데이터베이스 활동이 있을 때마다 새 세그먼트 파일로 전환합니다(데이터베이스 활동이 없으면 체크포인트를 건너뜁니다). 강제 전환으로 인해 일찍 닫혀진 아카이브 파일은 완전히 가득 찬 파일과 길이가 여전히 같습니다. 따라서 매우 짧은 형식을 사용하는 것은 현명하지 않습니다.archive_timeout— 아카이브 저장 공간이 부풀어오르게 됩니다.archive_timeout1분 정도의 설정은 일반적으로 합리적입니다. 데이터를 마스터 서버에서 더 빠르게 복사하려면 보관 대신 스트리밍 복제 사용을 고려해야 합니다. 이 값을 단위 없이 지정하면 초로 간주됩니다. 이 매개변수는젠 토토만 설정할 수 있습니다.postgresql.conf파일 또는 서버 명령줄젠 토토.
이 섹션은 복구 기간에만 적용되는 설정을 설명합니다. 후속 복구를 수행하려면 재설정해야 합니다.
“복구”서버를 대기 서버로 사용하거나 대상 복구를 실행하는 방법을 다룹니다. 일반적으로 대기 모드는 고가용성 및/또는 읽기 확장성을 제공하는 데 사용되는 반면, 대상 복구는 데이터 손실을 복구하는 데 사용됩니다.
대기 모드에서 서버를 시작하려면 다음과 같은 파일을 생성하십시오.대기.신호데이터 디렉토리에 있습니다. 서버는 복구에 들어가고 보관된 WAL의 끝에 도달해도 복구를 중지하지 않지만 다음에 지정된 대로 보내는 서버에 연결하여 계속 복구를 시도합니다.primary_conninfo다음을 사용하여 새로운 WAL 세그먼트를 설정 및/또는 가져옴restore_command. 이 모드의 경우 이 섹션의 매개변수와섹션 19.6.3관심이 있습니다. 매개변수:섹션 19.5.5또한 적용되지만 일반적으로 이 모드젠 토토는 유용하지 않습니다.
대상 복구 모드에서 서버를 시작하려면 다음과 같은 파일을 생성하십시오.복구.신호데이터 디렉토리에 있습니다. 둘 다인 경우대기.신호그리고복구.신호파일이 생성되면 대기 모드가 우선 적용됩니다. 보관된 WAL이 완전히 재생되거나 다음과 같은 경우 대상 복구 모드가 종료됩니다.복구_대상도달했습니다. 이 모드젠 토토는 이 섹션과섹션 19.5.5사용됩니다.
restore_command (문자열) WAL 파일 시리즈의 아카이브된 세그먼트를 검색하기 위해 실행하는 로컬 쉘 명령입니다. 이 매개변수는 아카이브 복구에 필요하지만 스트리밍 복제에는 선택 사항입니다. 모두%f문자열은 아카이브에서 검색할 파일 이름으로 대체되며 모든%p은 서버의 복사 대상 경로 이름으로 대체됩니다. (경로 이름은 현재 작업 디렉터리, 즉 클러스터의 데이터 디렉터리를 기준으로 합니다.) Any%r는 마지막으로 유효한 다시 시작 지점이 포함된 파일 이름으로 대체됩니다. 이는 복원을 다시 시작할 수 있도록 유지해야 하는 가장 빠른 파일이므로 이 정보를 사용하여 현재 복원에서 다시 시작을 지원하는 데 필요한 최소한으로 아카이브를 자르는 데 사용할 수 있습니다.%r일반적으로 웜 대기 구성젠 토토만 사용됩니다(참조PostgreSQL : 문서 : 13 : 26.2. 로그쉽 토토 사이트 순위 서버). 쓰기%%실제 내용 삽입%문자.
명령이 성공할 경우에만 종료 상태 0을 반환하는 것이 중요합니다. 명령할 것이다아카이브에 없는 파일 이름을 묻는 메시지가 표시됩니다. 요청하면 0이 아닌 값을 반환해야 합니다. 예:
restore_command = 'cp /mnt/server/archivedir/%f "%p"' Restore_command = 'copy "C:\\server\\archivedir\\%f" "%p"' # Windows
예외는 명령이 신호에 의해 종료된 경우입니다(SIGTERM, 데이터베이스 서버 종료의 일부로 사용됨) 또는 셸에 의한 오류(예: 명령을 찾을 수 없음)인 경우 복구가 중단되고 서버가 시작되지 않습니다.
이 매개변수는 서버 시작시에만 설정할 수 있습니다.
archive_cleanup_command (문자열) 이 선택적 매개변수는 모든 재시작 지점젠 토토 실행될 쉘 명령을 지정합니다. 목적archive_cleanup_command대기 서버에 더 이상 필요하지 않은 오래된 아카이브 WAL 파일을 정리하기 위한 메커니즘을 제공하는 것입니다. 모두%r는 마지막으로 유효한 다시 시작 지점이 포함된 파일 이름으로 대체됩니다. 이는 가장 빠른 파일이어야 합니다.보관복원을 다시 시작할 수 있도록 허용하여 이전의 모든 파일%r안전하게 제거될 수 있습니다. 이 정보는 현재 복원에서 다시 시작을 지원하는 데 필요한 최소 수준으로 아카이브를 자르는 데 사용할 수 있습니다.pg_archivecleanup모듈은 다음에서 자주 사용됩니다.archive_cleanup_command단일 대기 구성의 경우, 예:
archive_cleanup_command = 'pg_archivecleanup /mnt/server/archivedir %r'
그러나 여러 대기 서버가 동일한 아카이브 디렉토리에서 복원하는 경우 서버에서 더 이상 필요하지 않을 때까지 WAL 파일을 삭제하지 않도록 해야 합니다.archive_cleanup_command일반적으로 웜 대기 구성젠 토토 사용됩니다(참조PostgreSQL : 문서 : 13 : 26.2. 로그쉽 토토 사이트 순위 서버). 쓰기%%실제 내용 삽입%명령의 문자.
명령이 0이 아닌 종료 상태를 반환하면 경고 로그 메시지가 기록됩니다. 예외는 명령이 신호 또는 셸에 의한 오류(예: 명령을 찾을 수 없음)로 종료된 경우 치명적인 오류가 발생한다는 것입니다.
이 매개변수는 다음에서만 설정할 수 있습니다.postgresql.conf파일 또는 서버 명령줄젠 토토.
recovery_end_command (문자열) 이 매개변수는 복구가 끝날 때 한 번만 실행될 쉘 명령을 지정합니다. 이 매개변수는 선택사항입니다. 목적은recovery_end_command복제 또는 복구 후 정리 메커니즘을 제공하는 것입니다. 모두%r는 다음과 같이 마지막으로 유효한 다시 시작 지점을 포함하는 파일 이름으로 대체됩니다.archive_cleanup_command.
명령이 0이 아닌 종료 상태를 반환하면 경고 로그 메시지가 기록되고 데이터베이스는 계속해서 시작됩니다. 예외는 명령이 신호 또는 셸의 오류(예: 명령을 찾을 수 없음)에 의해 종료된 경우 데이터베이스가 시작을 진행하지 않는다는 것입니다.
이 매개변수는 다음에서만 설정할 수 있습니다.postgresql.conf파일 또는 서버 명령줄젠 토토.
기본적으로 복구는 WAL 로그 끝까지 복구됩니다. 다음 매개변수를 사용하여 이전 중지 지점을 지정할 수 있습니다. 다음 중 최대 하나복구_대상, recovery_target_lsn, 복구_대상_이름, recovery_target_time또는recovery_target_xid사용할 수 있습니다. 구성 파일에 이들 중 둘 이상이 지정되면 오류가 발생합니다. 이러한 매개변수는 서버 시작 시에만 설정할 수 있습니다.
복구_대상 = '즉시' 이 매개변수는 일관된 상태에 도달하는 즉시, 즉 가능한 한 빨리 복구가 종료되어야 함을 지정합니다. 온라인 백업에서 복원하는 경우 백업 수행이 종료된 지점을 의미합니다.
기술적으로 이것은 문자열 매개변수이지만'즉시'현재 허용되는 유일한 값입니다.
복구_대상_이름 (문자열) 이 매개변수는 명명된 복원 지점을 지정합니다(다음으로 생성됨pg_create_restore_point()) 복구가 진행됩니다.
recovery_target_time (타임스탬프) 이 매개변수는 복구가 진행될 타임스탬프를 지정합니다. 정확한 정지 지점도 다음의 영향을 받습니다.recovery_target_inclusive.
이 매개변수의 값은 다음에서 허용하는 것과 동일한 형식의 타임스탬프입니다.시간대가 포함된 타임스탬프데이터 유형, 시간대 약어를 사용할 수 없다는 점 제외(timezone_abbreviations변수는 구성 파일의 앞부분에서 설정되었습니다). 선호되는 스타일은 UTC의 숫자 오프셋을 사용하는 것입니다. 또는 전체 시간대 이름을 쓸 수 있습니다(예:유럽/헬싱키아님EEST.
recovery_target_xid (문자열) 이 매개변수는 복구가 진행될 트랜잭션 ID를 지정합니다. 트랜잭션 ID는 트랜잭션 시작 시 순차적으로 할당되지만 트랜잭션은 다른 숫자 순서로 완료될 수 있습니다. 복구될 트랜잭션은 지정된 트랜잭션 이전에 커밋된 트랜잭션(선택적으로 포함)입니다. 정확한 정지 지점도 다음의 영향을 받습니다.recovery_target_inclusive.
recovery_target_lsn (pg_lsn) 이 매개변수는 복구가 진행될 미리 쓰기 로그 위치의 LSN을 지정합니다. 정확한 정지 지점도 다음의 영향을 받습니다.recovery_target_inclusive. 이 매개변수는 시스템 데이터 유형을 사용하여 구문 분석됩니다.pg_lsn.
다음 옵션은 복구 대상을 추가로 지정하고 대상에 도달했을 때 발생하는 일에 영향을 미칩니다:
recovery_target_inclusive (부울) 지정된 복구 대상 바로 다음에 중지할지 여부를 지정합니다(켜짐) 또는 복구 대상 바로 앞(꺼짐). 다음 경우에 적용됩니다.recovery_target_lsn, recovery_target_time또는recovery_target_xid이 지정되었습니다. 이 설정은 대상 WAL 위치(LSN), 커밋 시간 또는 트랜잭션 ID가 각각 정확히 일치하는 트랜잭션을 복구에 포함할지 여부를 제어합니다. 기본값은켜짐.
recovery_target_timeline (문자열) 특정 타임라인으로 복구하도록 지정합니다. 값은 숫자 타임라인 ID이거나 특수 값일 수 있습니다. 값현재기본 백업이 수행된 당시와 동일한 타임라인을 따라 복구됩니다. 값최신아카이브에서 발견된 최신 타임라인으로 복구하며 이는 대기 서버에서 유용합니다.최신기본값입니다.
일반적으로 특정 시점 복구 후 도달한 상태로 돌아가야 하는 복잡한 재복구 상황에서만 이 매개변수를 설정하면 됩니다. 참조섹션 25.3.5토론용.
recovery_target_action (열거형) 복구 대상에 도달한 후 서버가 취해야 할 조치를 지정합니다. 기본값은일시 중지, 이는 복구가 일시 중지됨을 의미합니다.홍보복구 프로세스가 완료되고 서버가 연결을 허용하기 시작한다는 의미입니다. 마지막으로종료복구 대상에 도달한 후 서버를 중지합니다.
의 의도된 용도일시 중지설정은 이 복구 대상이 복구에 가장 바람직한 지점인지 확인하기 위해 데이터베이스에 대해 쿼리를 실행하도록 허용하는 것입니다. 일시 중지된 상태는 다음을 사용하여 재개될 수 있습니다.pg_wal_replay_resume()(참조표 9.87), 이로 인해 복구가 종료됩니다. 이 복구 대상이 원하는 중지 지점이 아닌 경우 서버를 종료하고 복구 대상 설정을 이후 대상으로 변경한 후 다시 시작하여 복구를 계속하세요.
그종료설정은 원하는 정확한 재생 지점에 인스턴스를 준비하는 데 유용합니다. 인스턴스는 계속해서 더 많은 WAL 레코드를 재생할 수 있습니다(실제로 다음에 시작될 때 마지막 체크포인트 이후 WAL 레코드를 재생해야 합니다).
참고하세요 왜냐하면복구.신호다음의 경우에는 삭제되지 않습니다.recovery_target_action다음으로 설정됨종료, 구성이 변경되지 않는 한 이후의 모든 시작은 즉시 종료되어 종료됩니다.복구.신호파일이 수동으로 제거되었습니다.
복구 대상이 설정되지 않은 경우 이 설정은 효과가 없습니다. 만일hot_standby활성화되지 않았습니다. 다음 설정은일시 중지다음과 동일하게 작동합니다종료. 프로모션이 진행되는 동안 복구 목표에 도달한 경우, 설정은일시 중지다음과 동일하게 작동합니다홍보.
어쨌든 복구 대상이 구성되었지만 대상에 도달하기 전에 아카이브 복구가 종료되면 서버는 치명적인 오류와 함께 종료됩니다.
문서에 올바르지 않은 내용이 있으면 일치하지 않습니다. 특정 기능에 대한 경험이 있거나 추가 설명이 필요한 경우 이용해주세요이 양식문서 문제를 보고합니다.