>174_word_end<
>176_word_end<
>187_word_end<>188_word_end<>189_word_end<
대기의 데이터는 기본 서버에서 도착하는 데 약간의 시간이 걸리므로 기본 및 대기 사이에 측정 가능한 지연이 발생합니다. 기본 및 대기에서 >15_word_end< 동시에 동일한 쿼리를 실행하면 다른 결과를 반환 할 수 있습니다. 우리는 대기에 대한 데이터가라고 말합니다.>192_word_end<1 차. 트랜잭션에 대한 커밋 레코드가 대기에 재생되면 해당 트랜잭션의 변경 사항은 대기에서 수행 된 새로운 스냅 샷으로 표시됩니다. >72_word_end< 트랜잭션 격리 수준에 따라 각 쿼리의 >232_word_end< 부분 또는 각 트랜잭션 >232_word_end<시 스냅 샷을 가져올 수 있습니다. 자세한 내용은 참조하십시오.>230_word_end<<.
핫 스탠드에서 >232_word_end<된 트랜잭션은 >147_word_end< 명령을 발행 할 수 있습니다.
>202_word_end<>203_word_end<
, >205_word_end<
>209_word_end<>210_word_end<
, >212_word_end<
, >214_word_end<
>218_word_end<>219_word_end<
, >221_word_end<
, Re>221_word_end<
>227_word_end<
>232_word_end<
, end
, abort
, 트랜잭션 >232_word_end<
SavePoint
, 릴리스
, SavePoint 로의 롤백
예외
블록 및 기타 내부 변수
잠금 테이블
,이 모드 중 하나에서 명시 적으로 만있을 때만 :액세스 공유
, 행 쉐어
또는Row Exclusive
.
계획 및 자원 :준비
, execute
, 딜 로이징
, 버려지
플러그인 및 확장 :로드
Unlisten
핫 스탠드에서 >232_word_end<된 트랜잭션에는 트랜잭션 ID가 할당되지 않으며 시스템 쓰기 로그에 쓸 수 없습니다. 따라서 >147_word_end< 조치는 오류 메시지를 생성합니다.
데이터 조작 언어 (DML) :삽입
, 업데이트
, 삭제
, COPY From
, Truncate
. 복구 중에 트리거가 실행되는 허용 조치가 없습니다. 이 제한은 트랜잭션 ID를 할당하지 않고 테이블 행을 읽거나 작성할 수 없기 때문에 임시 테이블에도 적용됩니다. >72_word_end< 핫 대기 환경에서는 불가능합니다.
데이터 정의 언어 (DDL) :생성
, 드롭
, Alter
, 댓글
. 이 제한은 임시 테이블에도 적용됩니다. 이러한 작업을 수행하려면 시스템 카탈로그 테이블을 업데이트해야하기 때문입니다.
선택 ... 공유 | 업데이트
, 기본 데이터 파일을 업데이트하지 않고 행 잠금을 취할 수 없기 때문에
규칙>203_word_end<
DML 명령을 생성하는 진술.
잠금
명시 적으로 모드를 명시 적으로 요청하는ROW 독점 모드
.
잠금
짧은 기본 형식으로 요청하기 때문에액세스 독점 모드
.
거래 전용 상태를 명시 적으로 설정하는 트랜잭션 관리 명령 :
쓰기 >232_word_end< >232_word_end<
, 트랜잭션 >232_word_end< 읽기 쓰기
트랜잭션 설정 읽기
, 트랜잭션 읽기로 세션 특성 설정
>221_word_end< transaction_read_only = off
2 상 커밋 명령 :거래 준비
, 준비
, 롤백 준비
읽기 전용 트랜잭션조차도 준비 단계에서 WAL을 작성해야하기 때문에 (2 단계 커밋의 첫 번째 단계).
시퀀스 업데이트 :NextVal ()
, >221_word_end
듣기
, Notify
정상 작동 중“읽기 전용”거래를 사용할 수 있습니다듣기
andNotify
, 핫 스탠드 비도 세션은 일반적인 읽기 전용 세션보다 약간 더 단단한 제한으로 작동합니다. 이러한 제한 중 일부는 향후 릴리스에서 풀릴 수 있습니다.
핫 사설 토토 중에 매개 변수Transaction_Read_Only
항상 사실이며 변경되지 않을 수 있습니다. 그러나 데이터베이스를 수정하려는 시도가 없으면 핫 스탠드 중 연결은 다른 데이터베이스 연결과 마찬가지로 작용합니다. 장애 조치 또는 전환이 발생하면 데이터베이스가 일반 처리 모드로 전환됩니다. 서버가 모드를 변경하는 동안 세션이 연결되어 있습니다. 핫 스탠드가 마감되면 핫 스탠드에서 >232_word_end<된 세션에서도 읽기 쓰기 트랜잭션을 >232_word_end<할 수 있습니다.
사용자는 발행하여 핫 스탠드비가 >72_word_end< 세션에 활성화되어 있는지 여부를 결정할 수 있습니다>219_word_end< in_>188_word_end<
. (14 세 >139_word_end<의 서버 버전에서in_>188_word_end<
매개 변수는 존재하지 않았습니다. >139_word_end< 서버를위한 실행 가능한 대체 방법은입니다.Transaction_Read_only 표시
.) 또한 함수 세트 (표 9.88) 사용자는 대기 서버에 대한 정보에 액세스 할 수 있습니다. 이를 통해 데이터베이스의 >72_word_end< 상태를 알고있는 프로그램을 작성할 수 있습니다. 이들은 복구 진행 상황을 모니터링하거나 데이터베이스를 특정 상태로 복원하는 복잡한 프로그램을 작성할 수있는 데 사용될 수 있습니다.
기본 및 대기 서버는 여러면에서 느슨하게 연결되어 있습니다. 1 차에 대한 조치는 대기에 영향을 미칩니다. 결과적으로, 그들 사이의 부정적인 상호 작용이나 갈등의 가능성이 있습니다. 이해하기 가장 쉬운 충돌은 성능입니다. 기본에서 막대한 데이터로드가 발생하면 대기에서 유사한 WAL 레코드 스트림이 생성되므로 대기 쿼리는 I/O.와 같은 시스템 리소스에 대해 경쟁 할 수 있습니다.
핫 스탠드로 발생할 수있는 추가 충돌 유형도 있습니다. 이러한 갈등은어려운 갈등쿼리를 취소해야 할 수도 있고 경우에 따라 세션이 연결이 끊어 졌다는 점에서 해결해야합니다. The user is provided with several ways to handle these conflicts. 갈등 사례는 >147_word_end<과 같습니다.
기본 서버에서 촬영 한 독점 잠금 액세스 (명시 적잠금
명령 및 다양한DDL동작, 사설 토토 쿼리에서 테이블 액세스와 충돌합니다.
임시 작업 파일에 해당 테이블 스페이스를 사용하여 대기 쿼리와의 1 차 충돌에서 테이블 스페이스를 삭제합니다.
대기의 해당 데이터베이스에 연결된 세션과의 기본 충돌에 대한 데이터베이스 삭제.
WAL에서 진공 청소 레코드의 적용 스냅 샷이 여전히있을 수있는 사설 토토 트랜잭션과 충돌합니다“참조”제거 할 행 중 하나입니다.
WAL에서 진공 청소 레코드의 적용 쿼리와 충돌하여 사설 토토의 대상 페이지에 액세스하는 것과 충돌합니다. 제거 할 데이터가 표시되는지 여부
기본 서버에서 이러한 경우는 단순히 사설 토토를 초래합니다. 그리고 사용자는 상충되는 작업 중 하나를 취소하도록 선택할 수 있습니다. 그러나 사설 토토에는 선택의 여지가 없습니다. 기본에서 이미 Wal-Logged 조치가 발생하여 사설 토토가 적용하지 않아야합니다. 더욱이, 사설 토토 상태가 기본의 뒤에 멀어지기 때문에 WAL 애플리케이션이 무기한으로 기다릴 수있게하는 것은 매우 바람직하지 않을 수 있습니다. 따라서, 적용되는 WAL 레코드와 충돌하는 사설 토토 쿼리를 강제로 취소하는 메커니즘이 제공됩니다.
문제 상황의 예는 기본 서버의 관리자입니다.드롭 테이블
>72_word_end< 대기 서버에서 쿼리중인 테이블에서. 분명히 대기 쿼리는이면 계속할 수 없습니다.드롭 테이블
사설 토토에 적용됩니다. 이 상황이 1 차에서 발생하면드롭 테이블
다른 쿼리가 끝날 때까지 기다릴 것입니다. 하지만 >187_word_end<드롭 테이블
기본에서 실행되며 기본에는 사설 토토에서 실행중인 쿼리에 대한 정보가 없으므로 사설 토토 쿼리를 기다리지 않습니다. 사설 토토 쿼리가 여전히 실행되는 동안 WAL Change 레코드가 사설 토토로 이어져 충돌이 발생합니다. 사설 토토 서버는 WAL 레코드의 응용 프로그램 (및 그 이후의 모든 것)을 지연 시키거나 다른 쿼리를 취소하여드롭 테이블
적용 할 수 있습니다.
충돌하는 쿼리가 짧은 경우 일반적으로 WAL 응용 프로그램을 약간 지연시켜 완료하는 것이 바람직합니다. 그러나 WAL 응용 프로그램의 긴 지연은 일반적으로 바람직하지 않습니다. 따라서 취소 메커니즘에는 매개 변수가 있습니다.max_standby_archive_delayandmax_standby_streaming_delay, WAL 애플리케이션에서 최대 허용 지연을 정의합니다. 새로 수신 된 WAL 데이터를 적용하기 위해 관련 지연 설정보다 오래 걸리면 충돌하는 쿼리가 취소됩니다. 아카이브에서 WAL 데이터를 읽는 경우 다른 지연 값을 지정할 수 있도록 두 가지 매개 변수가 있습니다 (즉,베이스 백업 또는“잡기”훨씬 뒤쳐진 사설 토토 서버) 스트리밍 복제를 통한 WAL 데이터를 읽는 사설 토토 서버.
주로 고 가용성을 위해 존재하는 사설 토토 서버에서는 지연 매개 변수를 비교적 짧게 설정하는 것이 가장 좋습니다. 따라서 사설 토토 쿼리로 인한 지연으로 인해 서버가 기본보다 훨씬 뒤떨어지지 않습니다. 그러나 사설 토토 서버가 장기 실행 쿼리를 실행하기위한 경우, 높거나 무한한 지연 값이 바람직 할 수 있습니다. 그러나 장기 실행 쿼리는 사설 토토 서버의 다른 세션이 월드 레코드의 응용 프로그램을 지연시키는 경우 기본의 최근 변경 사항을 보지 못하게 할 수 있음을 명심하십시오..
일단 지연이 지정되면max_standby_archive_delay
또는max_standby_streaming_delay
가 초과되어 충돌 쿼리가 취소됩니다. A 재생의 경우이지만 일반적으로 취소 오류가 발생합니다.DROP DATABASE
전체 충돌 세션이 종료됩니다. 또한, 갈등이 유휴 거래에 의해 보유 된 자물쇠가 지나면 충돌 세션이 종료됩니다 (이 동작은 미래에 변경 될 수 있습니다)..
취소 된 쿼리는 즉시 새 거래를 >232_word_end<한 후 즉시 ret을 ret 할 수 있습니다. 쿼리 취소는 재생되는 WAL 레코드의 특성에 따라 달라 지므로 취소 된 쿼리가 다시 실행되면 성공할 수 있습니다.
지연 매개 변수는 대기 서버에서 WAL 데이터를 수신 한 이후 경과 시간과 비교됩니다. 따라서 대기의 한 쿼리에 허용되는 유예 기간은 지연 매개 변수 이상이 아니며, 대기 쿼리가 완료되기를 기다리는 결과, 또는 무거운 업데이트로드를 따라 잡을 수없는 결과로 대기가 이미 뒤쳐진 경우 상당히 적을 수 있습니다..
사설 토토 쿼리와 WAL Replay 간의 충돌의 가장 일반적인 이유는“조기 정리”. 보통,PostgreSQLMVCC 규칙에 따라 데이터의 올바른 가시성을 보장하기 위해 볼 필요가없는 트랜잭션이없는 경우 >139_word_end< 행 버전을 정리할 수 있습니다. 그러나이 규칙은 기본에서 실행되는 거래에만 적용될 수 있습니다. 따라서 기본의 정리는 대기의 트랜잭션에 여전히 볼 수있는 행 버전을 제거 할 수 있습니다.
숙련 된 사용자는 행 버전 정리 및 행 버전 동결이 모두 사설 토토 쿼리와 충돌 할 수 있습니다. 매뉴얼 실행진공 동결
업데이트되거나 삭제 된 행이없는 테이블에서도 충돌이 발생할 수 있습니다.
사용자는 기본 서버에서 정기적이고 크게 업데이트되는 테이블이 대기에서 더 긴 쿼리를 신속하게 취소 할 수 있음을 분명히해야합니다. 그러한 경우에 대한 유한 값의 설정max_standby_archive_delay
또는max_standby_streaming_delay
설정과 유사한 것으로 간주 될 수 있습니다station_timeout
.
사설 토토 쿼리 취소의 수가 용납 할 수없는 것으로 밝혀진 경우 치료 가능성이 존재합니다. 첫 번째 옵션은 매개 변수를 설정하는 것입니다>188_word_end<_feedback
진공
최근에 죽은 행을 제거하여 청소 충돌이 발생하지 않습니다. 이렇게하면 1 차에서 죽은 줄의 정리를 지연시켜 바람직하지 않은 테이블 부풀게 될 수 있습니다. 그러나 대기 쿼리가 기본 서버에서 직접 실행 중이며 대기로로드 된 실행의 이점을 얻는 경우보다 더 나쁘지 않습니다. 대기 서버가 연결하고 자주 분리되면 기간을 처리하도록 조정할 수 있습니다.>188_word_end<_feedback
피드백이 제공되지 않습니다. 예를 들어, 증가를 고려max_standby_archive_delay
연결 해제 기간 동안 WAL 아카이브 파일의 충돌로 쿼리가 빠르게 취소되지 않도록합니다. 또한 증가하는 것을 고려해야합니다max_standby_streaming_delay
재 연결 후 새로 도착한 스트리밍 WAL 항목에 의한 빠른 취소를 피하려면
또 다른 옵션이 증가하는 것입니다VACUUM_DEFER_CLEANUP_AGE기본 서버의 경우 죽은 행이 평소처럼 빨리 정리되지 않도록합니다. 이렇게하면 쿼리가 사설 토토에서 취소되기 전에 더 많은 시간을 실행할 수 있습니다.max_standby_streaming_delay
. 그러나이 접근법으로 특정 실행 시간 창을 보장하기가 어렵습니다.VACUUM_DEFER_CLEANUP_AGE
기본 서버에서 실행 된 트랜잭션에서 측정됩니다.
쿼리 수와 그 이유는를 사용하여 볼 수 있습니다PG_STAT_DATABASE_CONFLICTS
사설 토토 서버에서 시스템보기. 그만큼PG_STAT_DATABASE
시스템보기도 요약 정보를 포함합니다.
사용자는 WAL Replay가 대기 중일 때 로그 메시지가 생성되는지 여부를 제어 할 수 있습니다Deadlock_timeout
충돌. 이것은에 의해 제어됩니다.log_recovery_conflict_waits매개 변수.
if>188_word_end<
ison
inpostgresql.conf
(기본값) 및 A가 있습니다.standby.signal
파일 존재, 서버는 핫 스탠드 모드로 실행됩니다. 그러나 서버가 쿼리를 실행할 수있는 일관된 상태를 제공하기에 충분한 복구가 완료 될 때까지 서버가 연결을 수락하지 않기 때문에 핫 스탠드가 연결되는 데 약간의 시간이 걸릴 수 있습니다. 이 기간 동안 연결을 시도한 클라이언트는 오류 메시지가 표시됩니다. 서버가 나타 났는지 확인하려면 응용 프로그램에서 연결하려고 시도하거나 서버 로그에서 이러한 메시지를 찾으십시오.
로그 : 대기 모드로 들어갑니다 ... 그럼 얼마 후 ... 로그 : 일관된 복구 상태에 도달했습니다 로그 : 데이터베이스 시스템이 읽기 전용 연결을 수락 할 준비가되었습니다
일관성 정보는 1 차 체크 포인트 당 한 번 기록됩니다. |Wal_level
로 설정되지 않았습니다복제
또는논리
1 차. 일관된 상태에 도달하는 것도이 두 조건 모두가있을 때 지연 될 수 있습니다.
쓰기 트랜잭션에는 64 개 이상의 SubTransactions이 있습니다.
매우 오래 지속되는 쓰기 트랜잭션
파일 기반 로그 배송을 실행중인 경우 >147_word_end< WAL 파일이 도착할 때까지 기다려야 할 수도 있습니다.archive_timeout
1 차 설정.
일부 매개 변수의 설정은 트랜잭션 ID, 잠금 및 준비된 트랜잭션을 추적하기위한 공유 메모리의 크기를 결정합니다. 이 공유 메모리 구조는 회복 중에 대기 메모리가 공유 메모리에서 떨어지지 않도록하기 위해 기본보다 대기에서 더 작아서는 안됩니다. 예를 들어, 기본이 준비된 트랜잭션을 사용했지만 대기가 준비된 트랜잭션을 추적하기 위해 공유 메모리를 할당하지 않은 경우 대기 구성이 변경 될 때까지 복구가 계속 될 수 없습니다. 영향을받는 매개 변수는 >147_word_end<과 같습니다.
max_connections
max_prepared_transactions
max_locks_per_transaction
max_wal_senders
max_worker_processes
이 문제가되지 않도록하는 가장 쉬운 방법은 이러한 매개 변수를 대기에 기본보다 동일한 값으로 설정하는 것입니다. 따라서 이러한 값을 늘리려면 기본 서버에 변경 사항을 적용하기 전에 모든 대기 서버에서 먼저해야합니다. 반대로, 이러한 값을 줄이려면 모든 대기 서버에 변경 사항을 적용하기 전에 기본 서버에서 먼저해야합니다. 대기가 홍보되면이를 따르는 대기에 필요한 매개 변수 설정에 대한 새로운 참조가됩니다. 따라서 전환 또는 장애 조치 중에 문제가되는 것을 피하려면 모든 대기 서버에서 이러한 설정을 동일하게 유지하는 것이 좋습니다.
WAL은 기본의 이러한 매개 변수로 변경됩니다. 핫 스탠드 비가 프로세스가 프로세스되는 경우, 1 차의 >72_word_end< 값이 자체 값보다 높음을 나타내는 WAL은 경고를 기록하고 회복을 일시 중지합니다 (예 :.
경고 : 매개 변수 설정이 충분하지 않아서 핫 스탠비가 불가능합니다. 세부 사항 : Max_Connections = 80은 기본 서버보다 낮은 설정이며 값은 100입니다. 로그 : 회복이 일시 중지되었습니다 세부 사항 : 복구가 사용되지 않으면 서버가 종료됩니다. 힌트 : 필요한 구성 변경 후 서버를 다시 >232_word_end<할 수 있습니다.
이 시점에서 대기의 설정을 업데이트하고 복구가 계속되기 전에 인스턴스를 다시 >232_word_end<해야합니다. 대기가 대기가 아닌 경우, 호환되지 않는 매개 변수 변경이 발생하면 일시 정지없이 즉시 종료됩니다..
관리자가 적절한 설정을 선택하는 것이 중요합니다max_standby_archive_delayandmax_standby_streaming_delay. 가장 좋은 선택은 비즈니스 우선 순위에 따라 다릅니다. 예를 들어 서버가 주로 고 가용성 서버로 임무를 수행하는 경우 매우 공격적인 설정이지만 지연 설정이 낮을 수 있습니다. 대기 서버가 의사 결정 >25_word_end< 쿼리를위한 추가 서버로 임무를 수행하는 경우 최대 지연 값을 여러 시간으로 설정하거나 쿼리가 완료 될 때까지 영원히 기다릴 수 있습니다..
트랜잭션 상태 기본에 작성된 "힌트 비트"가 월 에그 로그되지 않았으므로 대기의 데이터는 대기에서 힌트를 다시 작성할 수 있습니다. 따라서 대기 서버는 모든 사용자가 읽기 전용이더라도 여전히 디스크 쓰기를 수행합니다. 데이터 값 자체에 대한 변경 사항은 없습니다. 사용자는 여전히 큰 임시 파일을 작성하고 Relcache Info 파일을 다시 생성하므로 핫 스탠드 모드에서 데이터베이스의 일부는 실제로 읽기 전용이 아닙니다. 또한를 사용하여 원격 데이터베이스에 쓴다.dblink모듈 및 PL 기능을 사용하는 데이터베이스 외부의 기타 작업은 트랜잭션이 로컬로 읽기 전용이더라도 여전히 가능합니다.
복구 모드 중에 >147_word_end< 유형의 관리 명령이 허용되지 않습니다 :
데이터 정의 언어 (DDL) : 예 :색인 생성
특권 및 소유권 :grant
, Revoke
, 재 설계
유지 보수 명령 :분석
, 진공
, 클러스터
, Reindex
다시,이 명령 중 일부는 실제로 "읽기 전용"모드 트랜잭션 중에 허용됩니다..
결과적으로 사설 토토에만 존재하는 추가 인덱스 나 사설 토토에만 존재하는 통계를 만들 수 없습니다. 이러한 행정 명령이 필요한 경우 1 차에서 실행해야하며 결국 이러한 변경 사항은 사설 토토로 전파됩니다.
pg_cancel_backend ()
andpg_terminate_backend ()
사용자 백엔드에서 작동하지만 >232_word_end< 프로세스는 회복을 수행하지 않습니다.pg_stat_activity
복구 트랜잭션이 활성으로 표시되지 않습니다. 결과적으로,PG_PREPARED_XACTS
회복 중에는 항상 비어 있습니다. 의심의 여지가있는 거래를 해결하려면 viewPG_PREPARED_XACTS
기본 및 회복 종료 후 거래를 해결하거나 해결하기위한 기본 및 명령을 발행합니다.
PG_LOCKS
정상적으로 백엔드가 보유한 자물쇠를 표시합니다.pg_locks
또한 모든 것을 소유 한 >232_word_end< 프로세스에서 관리하는 가상 트랜잭션을 보여줍니다accessexclusivelocks
회복에 의해 재생되는 트랜잭션에 의해 유지됩니다. >232_word_end< 프로세스는 데이터베이스를 변경하기 위해 잠금 장치를 획득하지 않으므로 이외의 잠금 장치가 있습니다.accessexclusivelocks
표시하지 마십시오pg_locks
>232_word_end< 프로세스의 경우; 그들은 단지 존재하는 것으로 추정됩니다.
theNagios플러그인check_pgsql그것이 확인하는 간단한 정보가 존재하기 때문에 작동합니다. 그만큼check_postgres모니터링 스크립트도 작동하지만보고 된 일부 값은 다르거 나 혼란스러운 결과를 줄 수 있습니다. 예를 들어, 대기에는 진공이 발생하지 않기 때문에 마지막 진공 시간은 유지되지 않습니다. 기본에서 실행되는 진공 청소기는 여전히 대기로 변경을 보냅니다.
WAL 파일 제어 명령은 복구 중에 작동하지 않습니다 (예 :pg_start_back>141_word_end<
, PG_SWITCH_WAL
etc.
동적으로로드 가능한 모듈 작업 (pg_stat_statements
.
자문 잠금 장치는 교착 상태 감지를 포함하여 복구 중에 정상적으로 작동합니다. 자문 잠금 장치는 절대 로그인되지 않으므로 기본 또는 대기에 대한 자문 잠금 장치가 WAL Replay와 충돌하는 것은 불가능합니다. 또한 1 차 자문 잠금 잠금 장치를 획득하고 대기에서 유사한 자문 잠금을 >232_word_end<할 수 없습니다. 자문 잠금은 인수 한 서버와 관련이 있습니다.
예를 들어 트리거 기반 복제 시스템Slony, LondisteandBucardo사설 토토에서 실행되지 않지만 변경 사항이 적용될 사설 토토 서버로 전송되지 않는 한 기본 서버에서 행복하게 실행됩니다. WAL Replay는 트리거 기반이 아니므로 사설 토토에서 추가 데이터베이스를 작성하거나 트리거 사용에 의존하는 시스템으로 릴레이 할 수 없습니다.
새로운 OID를 할당 할 수는 없지만 일부는uuid생성기는 데이터베이스에 새로운 상태를 작성하는 데 의존하지 않는 한 여전히 작동 할 수 있습니다.
>72_word_end<는 읽기 전용 트랜잭션 중에 임시 테이블 생성이 허용되지 않으므로 경우에 따라 기존 스크립트가 올바르게 실행되지 않습니다. 이 제한은 나중에 릴리스에서 완화 될 수 있습니다. 이것은 SQL 표준 준수 문제와 기술적 문제입니다.
드롭 테이블 스페이스
테이블 스페이스가 비어있는 경우에만 성공할 수 있습니다. 일부 사설 토토 사용자는 자신의 테이블 스페이스를 적극적으로 사용하고있을 수 있습니다temp_tablespaces
매개 변수. 테이블 스페이스에 임시 파일이있는 경우 임시 파일이 제거되도록 모든 활성 쿼리가 취소되어 테이블 스페이스를 제거하고 WAL 리플레이가 계속 될 수 있습니다.
runningDROP DATABASE
또는ALTER DATABASE ... SET TABLESPACE
기본에서는 대기의 해당 데이터베이스에 연결된 모든 사용자가 강제적으로 연결이 끊어지게하는 WAL 항목을 생성합니다. 이 조치는의 설정에 관계없이 즉시 발생합니다.max_standby_streaming_delay
. 참고Alter Database ... Rename
대부분의 경우 눈에 띄지 않는 사용자를 연결하지 않지만 데이터베이스 이름에 어떤 식 으로든 프로그램 혼동을 일으킬 수도 있습니다..
정상 (비 복구) 모드에서, 문제가 발생하면Drop User
또는드롭 역할
사용자가 여전히 연결되어있는 동안 로그인 기능을 갖춘 역할의 경우 연결된 사용자에게는 아무런 일이 발생하지 않습니다. 그러나 사용자는 다시 연결할 수 없습니다. 이 동작은 회복에도 적용되므로 aDrop User
기본의 경우 사설 토토에서 해당 사용자를 분리하지 않습니다.
통계 수집가가 복구 중에 활성화되어 있습니다. 모든 스캔, 읽기, 블록, 인덱스 사용법 등은 정상적으로 대기에 기록됩니다. 재생 된 작업은 1 차에 영향을 복제하지 않으므로 삽입물을 재생하면 PG_STAT_USER_TABLES의 인서트 열이 증가하지 않습니다. 통계 파일은 복구 >232_word_end<시 삭제되므로 기본 및 대기 통계가 다릅니다. 이것은 버그가 아닌 기능으로 간주됩니다.
Autovacuum은 회복 중에 활성화되지 않습니다. 복구가 끝날 때 정상적으로 >232_word_end<됩니다.
체크 포인터 프로세스 및 배경 작가 프로세스는 복구 중에 활성화됩니다. 체크 포인터 프로세스는 재>232_word_end< 점 (기본의 체크 포인트와 유사)을 수행하며 배경 작성자 프로세스는 정상적인 블록 청소 활동을 수행합니다. 여기에는 대기 서버에 저장된 힌트 비트 정보의 업데이트가 포함될 수 있습니다. 그만큼Checkpoint
새로운 체크 포인트가 아닌 다시 >232_word_end<점을 수행하지만 복구 중에 명령이 허용됩니다.
위에서 언급 한 다양한 매개 변수가섹션 27.4.2and섹션 27.4.3.
기본 매개 변수Wal_levelandVACUUM_DEFER_CLEANUP_AGE사용할 수 있습니다.max_standby_archive_delayandmax_standby_streaming_delay기본에 설정된 경우 효과가 없습니다.
사설 토토, 매개 변수>188_word_end<, max_standby_archive_delayandmax_standby_streaming_delay사용할 수 있습니다.VACUUM_DEFER_CLEANUP_AGE서버가 사설 토토 모드에 남아있는 한 영향을 미치지 않지만 사설 토토가 기본이되면 관련성이 높아집니다.
핫 스탠드에는 몇 가지 제한이 있습니다. 이것들은 향후 릴리스에서 고정 될 수 있고 아마도 >147_word_end<과 같습니다.
스냅 샷을 찍기 전에 트랜잭션 실행에 대한 전체 지식이 필요합니다. 많은 수의 잠수함 (>72_word_end< 64보다 큰)을 사용하는 거래는 가장 긴 달리기 쓰기 트랜잭션이 완료 될 때까지 읽기 전용 연결의 >232_word_end<을 지연시킵니다. 이 상황이 발생하면 설명 메시지가 서버 로그로 전송됩니다.
기본의 각 체크 포인트에서 대기 쿼리의 유효한 >232_word_end<점이 생성됩니다. 기본이 종료 상태에있는 동안 대기가 종료되면 기본이 >232_word_end<될 때까지 핫 스탠드를 다시 입력 할 수 없으므로 WAL 로그에서 추가 >232_word_end<점이 생성됩니다. 이 상황은 그것이 일어날 수있는 가장 일반적인 상황에서는 문제가되지 않습니다. 일반적으로 기본이 종료되고 더 이상 사용할 수없는 경우, 대기가 새로운 기본으로 작동하도록 대기 변환이 필요한 심각한 실패로 인한 것일 수 있습니다. 그리고 기본이 의도적으로 중단되는 상황에서 대기가 새로운 기본 원활하게 새로운 기본 절차가되도록 조정하는 것은 표준 절차입니다.
회복 종료시accessexclusivelocks
준비된 트랜잭션에 의해 유지되면 정상적인 잠금 테이블 항목의 두 배가 필요합니다. 일반적으로 취하는 많은 동시에 준비된 거래를 실행할 계획이라면accessexclusivelocks
, 또는 많은 시간이 걸리는 큰 거래를 계획 할 계획입니다accessexclusivelocks
, 더 큰 값을 선택하는 것이 좋습니다max_locks_per_transaction
, 아마도 기본 서버의 매개 변수 값의 두 배나 정도입니다. 당신은 당신의 설정이라면 이것을 전혀 고려할 필요가 없습니다MAX_PREPARED_TRANSACTION
는 0입니다.
직렬화 가능한 트랜잭션 격리 수준은 아직 핫 스탠드에서 사용할 수 없습니다. (보다>194_word_end<.3및섹션 13.4.1자세한 내용은 핫 스탠드 비지 모드에서 직렬화 가능한 격리 레벨로의 트랜잭션을 설정하려는 시도로 오류가 발생합니다.
문서에 올바르지 않은 내용이 있으면 일치하지 않습니다. 특정 기능에 대한 귀하의 경험 또는 추가 설명이 필요합니다. 사용이 양식문서 문제를보고하려면