| 와이즈 토토 9.2.24 문서 | ||||
|---|---|---|---|---|
| 이전 | 위로 | 제25장. 고가용성, 부하 분산 및 복제 | 스포츠 토토 베트맨 : 문서 : 9.2 : 복구 구성 | |
상시 대기는 다음 기능을 설명하는 데 사용되는 용어입니다. 서버에 연결하고 서버가 있는 동안 읽기 전용 쿼리를 실행합니다. 아카이브 복구 또는 대기 모드에 있습니다. 이는 두 가지 모두에 유용합니다. 복제 목적 및 원하는 위치로 백업 복원 매우 정밀하게 상태를 설명합니다. Hot Standby라는 용어는 다음을 의미하기도 합니다. 복구에서 정상으로 전환하는 서버의 능력 사용자가 쿼리를 계속 실행하거나 쿼리를 유지하는 동안 작업 연결이 열려 있습니다.
상시 와이즈 토토 모드에서 쿼리를 실행하는 것은 일반 쿼리와 유사합니다 운영, 여러 가지 사용법과 관리가 있지만 차이점은 아래에 설명되어 있습니다.
그때hot_standby매개변수가 와이즈 토토 서버에서 true로 설정되면 시작됩니다. 복구로 인해 시스템이 복구되면 연결 수락 일관된 상태로. 그러한 모든 연결은 엄격하게 읽기 전용; 임시 테이블도 작성되지 않을 수 있습니다.
대기 중인 데이터가 서버에서 도착하는 데 시간이 좀 걸립니다. 기본 서버 사이에 측정 가능한 지연이 있을 수 있으므로 기본 및 대기. 거의 동일한 쿼리 실행 따라서 기본 및 대기 모두에서 동시에 다른 결과를 반환합니다. 대기 중인 데이터는 다음과 같습니다.최종 일관성와 함께 기본. 트랜잭션에 대한 커밋 레코드가 재생되면 대기 모드에서는 해당 트랜잭션으로 인한 변경 사항이 대기 모드에서 생성된 모든 새 스냅샷에 표시됩니다. 스냅샷 각 쿼리 시작 시 또는 각 쿼리 시작 시 가져올 수 있습니다. 현재 트랜잭션 격리에 따라 트랜잭션 수준. 자세한 내용은 다음을 참조하세요.섹션 13.2.
상시 대기 중에 시작된 트랜잭션은 다음 명령:
쿼리 액세스 -선택, 복사 대상
커서 명령 -선언, 가져오기, 닫기
매개변수 -표시, SET, 리셋
거래 관리 명령
시작, END, 중단, 거래 시작
세이브포인트, 출시, 다음으로 롤백 세이브포인트
예외블록 및 기타 내부 하위 거래
락 테이블, 하지만 다음 경우에만 다음 모드 중 하나에서 명시적으로:액세스 공유, 행 공유또는행 독점.
계획 및 자원 -준비, 실행, 삭제, 삭제
플러그인 및 확장 -로드
상시 대기 중에 시작된 트랜잭션은 절대 트랜잭션 ID가 할당되어 시스템에 쓸 수 없습니다. 미리 쓰기 로그. 따라서 다음 작업을 수행하면 오류 메시지:
데이터 조작 언어(DML) -삽입, 업데이트, 삭제, 복사 보낸사람, 잘라내기. 참고하세요 트리거를 발생시키는 허용된 작업이 없습니다. 복구 중에 실행됩니다. 이 제한은 다음에도 적용됩니다. 임시 테이블(테이블 행을 읽을 수 없거나 트랜잭션 ID를 할당하지 않고 작성되었습니다. 현재 Hot Standby 환경에서는 불가능합니다.
데이터 정의 언어(DDL) -생성, 드롭, 변경, 댓글. 이 제한은 다음에도 적용됩니다. 임시 테이블은 이러한 작업을 수행하기 때문에 시스템 카탈로그 테이블을 업데이트해야 합니다.
선택...공유용 | 업데이트, 업데이트하지 않고는 행 잠금을 수행할 수 없기 때문입니다. 기본 데이터 파일.
규칙선택다음과 같은 진술 DML 명령을 생성합니다.
잠금명시적으로 요청하는 다음보다 높은 모드행 독점 모드.
잠금짧은 기본 형식으로, 요청한 이후로접속 독점 모드.
명시적으로 설정하는 트랜잭션 관리 명령 읽기 전용이 아닌 상태:
읽기 쓰기 시작, 거래 시작 읽기 쓰기
트랜잭션 읽기 쓰기 설정, 세션 특성을 다음으로 설정 트랜잭션 읽기 쓰기
SET transaction_read_only = 꺼짐
2단계 커밋 명령 -준비하세요 거래, 커밋 준비됨, 롤백 준비됨왜냐하면 심지어 읽기 전용 트랜잭션은 준비에 WAL을 작성해야 합니다. 단계(2단계 커밋의 첫 번째 단계).
시퀀스 업데이트 -다음값(), setval()
듣기, 듣지 않음, 알림
정상 작동 시,"읽기 전용"거래를 사용할 수 있습니다듣기, 듣지 않음및알림, 즉 Hot Standby 세션 일반보다 약간 더 엄격한 제한을 두고 운영됩니다. 읽기 전용 세션. 아마도 이들 중 일부는 향후 릴리스에서는 제한이 완화될 수 있습니다.
상시 와이즈 토토 중 매개변수transaction_read_only항상 사실이며 그렇지 않을 수도 있습니다. 변경됩니다. 그러나 수정을 시도하지 않는 한 데이터베이스, 핫 대기 중 연결은 다른 연결과 거의 유사하게 작동합니다. 다른 데이터베이스 연결. 장애 조치(failover) 또는 전환(switchover)이 발생하는 경우 데이터베이스는 일반 처리 모드로 전환됩니다. 세션 서버가 모드를 변경하는 동안 연결이 유지됩니다. 일단 뜨거워 대기가 끝나면 읽기-쓰기를 시작할 수 있습니다. 트랜잭션(핫 중에 시작된 세션에서도 가능) 대기).
사용자는 자신의 세션이 다음과 같은지 알 수 있습니다. 발행을 통한 읽기 전용쇼 transaction_read_only. 또한, 일련의 기능 (테이블 9-61) 사용자가 대기에 대한 정보에 액세스하도록 허용합니다. 서버. 이를 통해 사용자는 다음 사항을 인식하는 프로그램을 작성할 수 있습니다. 데이터베이스의 현재 상태. 이는 모니터링하는 데 사용될 수 있습니다. 복구 진행 또는 복잡한 프로그램 작성을 허용 데이터베이스를 특정 상태로 복원합니다.
기본 및 대기 서버는 여러 면에서 느슨합니다. 연결되었습니다. 기본에 대한 작업은 다음에 영향을 미칩니다. 대기. 결과적으로 부정적인 영향을 미칠 가능성이 있음 그들 사이의 상호작용이나 갈등. 가장 쉬운 갈등 이해하는 것은 성능입니다. 막대한 데이터 로드가 발생하는 경우 기본에서는 유사한 WAL 스트림이 생성됩니다. 대기에 레코드가 있으므로 대기 쿼리가 경쟁할 수 있습니다. I/O와 같은 시스템 리소스.
또한 발생할 수 있는 추가 유형의 충돌이 있습니다. 핫 스탠바이. 이러한 충돌은심각한 갈등그런 의미에서 쿼리를 취소해야 할 수도 있으며 경우에 따라 세션이 취소될 수도 있습니다. 문제를 해결하려면 연결을 끊으세요. 사용자에게는 여러 가지가 제공됩니다. 이러한 갈등을 처리하는 방법. 충돌 사례는 다음과 같습니다.
주 서버에서 단독 잠금에 액세스하고, 명시적인 내용을 모두 포함잠금명령 및 다양한DDL작업, 와이즈 토토 상태의 테이블 액세스와 충돌 쿼리.
기본 충돌에 테이블스페이스를 삭제하면 다음과 충돌합니다. 임시 작업을 위해 해당 테이블스페이스를 사용하는 대기 쿼리 파일.
기본 충돌에 데이터베이스를 삭제하면 다음과 충돌합니다. 대기 중인 해당 데이터베이스에 연결된 세션입니다.
WAL의 진공 청소 기록 적용 스냅샷이 가능한 와이즈 토토 트랜잭션과 충돌합니다. 아직도"참조"다음 행 중 하나 제거됩니다.
WAL의 진공 청소 기록 적용 대상 페이지에 액세스하는 쿼리와 충돌합니다. 와이즈 토토(제거할 데이터가 있는지 여부) 보입니다.
주 서버에서 이러한 경우는 단순히 기다리게 됩니다. 사용자는 충돌하는 두 가지 중 하나를 취소하도록 선택할 수 있습니다. 행동. 그러나 대기 상태에서는 선택의 여지가 없습니다. WAL에 기록된 작업이 기본에서 이미 발생했으므로 대기는 적용에 실패해서는 안 됩니다. 게다가 WAL을 허용하는 것은 무기한 대기하는 것은 매우 바람직하지 않을 수 있습니다. 대기 상태가 점점 더 뒤쳐지기 때문입니다. 기본의. 따라서 강제로 수행할 수 있는 메커니즘이 제공됩니다. 적용할 WAL과 충돌하는 대기 쿼리 취소 기록.
문제 상황의 예는 다음의 관리자입니다. 실행 중인 기본 서버드롭 테이블현재 대기 모드에서 쿼리 중인 테이블 서버. 분명히 다음과 같은 경우 대기 쿼리를 계속할 수 없습니다.드롭 테이블와이즈 토토시 적용됩니다. 이 상황이 기본에서 발생한 경우,드롭 테이블다른 쿼리가 완료될 때까지 기다립니다. 끝났다. 하지만 언제드롭 테이블실행됨 기본에서 기본에는 무엇에 대한 정보가 없습니다. 쿼리가 대기 모드에서 실행 중이므로 어떤 쿼리도 기다리지 않습니다. 그러한 대기 쿼리. WAL 변경 기록은 대기 쿼리가 계속 실행되는 동안 대기가 발생하여 갈등. 대기 서버는 다음 중 하나의 적용을 지연해야 합니다. WAL 기록(그리고 그 이후의 모든 것)을 삭제하거나 취소합니다. 충돌하는 쿼리를 처리하여드롭 표적용할 수 있습니다.
충돌하는 쿼리가 짧은 경우 일반적으로 바람직합니다. WAL 신청을 연기하여 완료되도록 합니다. 조금; 하지만 일반적으로 WAL 신청이 오래 지연되는 것은 아닙니다. 바람직하다. 따라서 취소 메커니즘에는 매개변수가 있습니다.max_standby_archive_delay그리고max_standby_streaming_delay21727_22113"잡기 위로"아주 뒤처진 와이즈 토토 서버) 대 스트리밍 복제를 통해 WAL 데이터를 읽습니다.
주로 높은 용도로 존재하는 대기 서버에서 가용성을 고려하면 지연 매개변수를 상대적으로 설정하는 것이 가장 좋습니다. 서버가 기본 서버보다 크게 뒤처지지 않도록 짧게 설정합니다. 대기 쿼리로 인한 지연으로 인해. 그러나 만약 대기 서버는 장기 실행 쿼리를 실행하기 위한 것입니다. 그러면 높거나 심지어 무한한 지연 값이 바람직할 수 있습니다. 그러나 장기 실행 쿼리로 인해 대기 서버의 다른 세션에서 최근 변경 사항을 볼 수 없음 기본에서 WAL 기록 적용이 지연되는 경우.
지연이 다음으로 지정되면max_standby_archive_delay또는max_standby_streaming_delay초과되었습니다. 충돌하는 쿼리는 취소됩니다. 이는 일반적으로 다음과 같은 결과를 낳습니다. 취소 오류가 발생했지만 a데이터베이스 삭제전체가 충돌합니다 세션이 종료됩니다. 또한, 갈등이 어느 정도 해소되면 유휴 트랜잭션에 의해 잠금이 유지되고 충돌하는 세션은 종료되었습니다(이 동작은 향후 변경될 수 있습니다).
취소된 쿼리는 즉시 재시도될 수 있습니다(시작 후 물론 새로운 거래입니다). 쿼리 취소에 따라 다르므로 재생되는 WAL 레코드의 성격에 대한 쿼리는 다음과 같습니다. 취소되었습니다. 다시 실행하면 성공할 수도 있습니다.
지연 매개변수는 대기 서버에서 WAL 데이터를 수신한 이후 경과된 시간 서버. 따라서 한 쿼리에 대해 유예 기간이 허용됩니다. 대기는 지연 매개변수를 초과할 수 없으며 대기 상태가 이미 뒤처진 경우 훨씬 적습니다. 이전 쿼리가 완료될 때까지 기다린 결과 또는 과도한 업데이트 로드를 따라잡지 못한 결과입니다.
와이즈 토토 쿼리 간의 충돌이 발생하는 가장 일반적인 이유 WAL 재생은"조기 정리". 일반적으로,와이즈 토토허용합니다 트랜잭션이 없는 경우 이전 행 버전 정리 데이터의 올바른 가시성을 보장하려면 이를 확인해야 합니다. MVCC 규칙에 따릅니다. 그러나 이 규칙은 다음 경우에만 적용될 수 있습니다. 마스터에서 실행되는 트랜잭션. 그래서 그것은 가능하다 마스터를 정리하면 아직 남아 있는 행 버전이 제거됩니다. 대기 중인 트랜잭션에 표시됩니다.
숙련된 사용자는 두 행 버전 정리 모두에 유의해야 합니다. 행 버전 동결은 잠재적으로 대기 버전과 충돌할 수 있습니다. 쿼리. 매뉴얼 실행진공 정지아무것도 없는 테이블에서도 충돌을 일으킬 가능성이 높습니다. 행이 업데이트되거나 삭제되었습니다.
사용자는 테이블이 정기적으로 기본 서버에서 크게 업데이트되면 빠르게 대기에서 오래 실행되는 쿼리를 취소합니다. 그런 에 대한 유한 값 설정의 경우max_standby_archive_delay또는max_standby_streaming_delay고려될 수 있습니다 설정과 유사statement_timeout.
대기 쿼리 수가 다음과 같은 경우 치료 가능성이 존재합니다. 취소는 받아들일 수 없는 것으로 확인되었습니다. 첫 번째 옵션은 매개변수를 설정하려면hot_standby_feedback, 이는 방지진공최근에 죽은 행 제거 등 정리 충돌이 발생하지 않습니다. 이렇게 하시면 주의하셔야 할 점은 이렇게 하면 기본 데이터베이스에서 데드 행 정리가 지연됩니다. 원하지 않는 테이블 부풀림이 발생할 수 있습니다. 그러나 청소는 상황은 대기 쿼리가 다음과 같은 경우보다 나쁘지 않습니다. 기본 서버에서 직접 실행 중이지만 여전히 실행을 대기 모드로 오프로드하는 이점을 얻습니다.max_standby_archive_delay유지되어야 합니다 지연된 WAL 파일이 이미 원하는 와이즈 토토와 충돌하는 항목이 포함되어 있습니다. 쿼리.
또 다른 옵션은 증가하는 것입니다.vacuum_defer_cleanup_age주 서버에서 데드 행이 정리되지 않도록 합니다. 평소처럼 빨리요. 이렇게 하면 시간이 더 많이 허용됩니다. 쿼리가 대기에서 취소되기 전에 실행되도록 하려면 높은 값을 설정할 필요 없이max_standby_streaming_delay. 그러나 그것은 특정 실행 시간 창을 보장하기가 어렵습니다. 이 접근 방식은 이후vacuum_defer_cleanup_age측정 단위는 다음과 같습니다. 기본 서버에서 실행되는 트랜잭션입니다.
쿼리 취소 횟수와 취소 이유는 다음과 같습니다. 다음을 사용하여 본 것입니다.pg_stat_database_contributes시스템 보기 와이즈 토토 서버.pg_stat_database시스템 보기에는 다음도 포함됩니다. 요약 정보입니다.
만약hot_standby변함켜짐in와이즈 토토.conf그리고 거기에recovery.conf파일 현재 서버는 Hot Standby 모드로 실행됩니다. 그러나 그것은 Hot Standby 연결이 허용되기까지는 다소 시간이 걸릴 수 있습니다. 왜냐하면 서버는 연결이 완료될 때까지 연결을 수락하지 않기 때문입니다. 일관된 상태를 제공하기에 충분한 복구가 완료되었습니다. 쿼리를 실행할 수 있는 대상입니다. 이 기간 동안 고객은 연결 시도는 오류 메시지와 함께 거부됩니다. 받는 사람 서버가 작동하는지 확인하세요. 루프가 연결을 시도하고 있는지 확인하세요. 애플리케이션에서 실행하거나 서버에서 이러한 메시지를 찾아보세요. 로그:
로그: 대기 모드 진입 ... 그러다가 얼마 후... 로그: 일관된 복구 상태에 도달함 로그: 데이터베이스 시스템이 읽기 전용 연결을 허용할 준비가 되었습니다.
일관성 정보는 다음의 체크포인트당 한 번 기록됩니다. 기본. 다음과 같은 경우 핫 스탠바이를 활성화할 수 없습니다. 다음 기간 동안 작성된 WAL을 읽는 중wal_level다음으로 설정되지 않았습니다hot_standby기본에. 도달 일관된 상태는 두 가지 모두가 있는 경우에도 지연될 수 있습니다. 다음 조건:
쓰기 트랜잭션에 64개 이상의 하위 트랜잭션이 있습니다.
매우 오래 지속되는 쓰기 트랜잭션
파일 기반 로그 전달("웜 대기")을 실행 중인 경우, 다음 WAL 파일이 도착할 때까지 기다려야 할 수도 있습니다. 다음만큼 길 수 있습니다.archive_timeout기본 설정.
대기 모드에서 일부 매개변수를 설정하려면 다음이 필요합니다. 기본에서 변경된 경우 재구성. 에 대한 이러한 매개변수는 대기의 값이 다음과 같아야 합니다. 기본 값보다 큽니다. 이러한 매개변수가 충분히 높게 설정되지 않으면 대기 모드가 시작을 거부합니다. 그런 다음 더 높은 값을 제공하고 서버를 다시 시작하여 다시 회복을 시작합니다. 이러한 매개변수는 다음과 같습니다.
max_connections
max_prepared_transactions
max_locks_per_transaction
관리자가 적절한 것을 선택하는 것이 중요합니다 에 대한 설정max_standby_archive_delay그리고max_standby_streaming_delay. 최선의 선택은 다양하다 비즈니스 우선순위에 따라. 예를 들어 서버가 주로 고가용성 서버 역할을 수행하는 경우 낮은 지연 설정을 원합니다(아마도 0일 수도 있음). 매우 공격적인 설정. 대기 서버가 의사결정 지원 쿼리를 위한 추가 서버는 다음과 같습니다. 최대 지연 값을 몇 시간으로 설정하는 것이 허용됩니다. 심지어 -1은 쿼리가 완료될 때까지 영원히 기다리는 것을 의미합니다.
기본에 기록된 트랜잭션 상태 "힌트 비트"는 다음과 같습니다. WAL에 기록되지 않으므로 대기 중인 데이터가 다시 기록될 가능성이 높습니다. 대기 모드에서 다시 힌트를 줍니다. 따라서 대기 서버는 여전히 모든 사용자가 읽기 전용인 경우에도 디스크 쓰기를 수행합니다. 아니 데이터 값 자체에 변경 사항이 발생합니다. 사용자는 여전히 대규모 임시 파일 작성 및 relcache 정보 재생성 파일이므로 핫 중에는 데이터베이스의 어떤 부분도 실제로 읽기 전용이 아닙니다. 대기 모드. 또한 다음을 사용하여 원격 데이터베이스에 씁니다.dlink모듈 및 기타 PL 기능을 사용하는 데이터베이스 외부 작업은 여전히 트랜잭션이 읽기 전용인 경우에도 가능합니다. 로컬로.
다음 유형의 관리 명령은 복구 모드 중에 허용됨:
데이터 정의 언어(DDL) - 예색인 생성
권한 및 소유권 -부여, 취소, 재할당
유지관리 명령 -분석, 진공, 클러스터, REINDEX
다시 말하지만, 이러한 명령 중 일부는 실제로 허용됩니다. 기본에서 "읽기 전용" 모드 트랜잭션 중에.
결과적으로, 존재하는 추가 색인을 생성할 수 없습니다 대기 모드에서만 존재하는 통계도 아니고 대기 모드에서만 존재하는 통계도 아닙니다. 대기. 이러한 관리 명령이 필요한 경우 기본에서 실행되어야 하며 결국 이러한 변경 사항은 대기 상태로 전파됩니다.
pg_cancel_backend()그리고pg_terminate_backend()작동합니다
사용자 백엔드에서는 수행되지만 시작 프로세스에서는 수행되지 않습니다.
회복.pg_stat_activity하지 않습니다
시작 프로세스에 대한 항목을 표시하거나 복구하지 않습니다.
거래가 활성으로 표시됩니다. 그 결과,pg_prepared_xacts다음 동안에는 항상 비어 있습니다.
회복. 불확실한 문제를 해결하고 싶다면 준비하세요
거래, 보기pg_prepared_xacts기본 및 발행 명령에 대해 트랜잭션을 해결합니다.
거기.
pg_locks다음이 보유한 잠금을 표시합니다. 백엔드는 평소와 같습니다.pg_locks또한 시작 프로세스에 의해 관리되는 가상 트랜잭션을 보여줍니다. 모두 소유함AccessExclusiveLocks보유자 복구에 의해 재생되는 트랜잭션. 참고로 스타트업 프로세스는 데이터베이스 변경을 위해 잠금을 획득하지 않습니다. 따라서 이외의 잠금AccessExclusiveLocks다음에 표시되지 않음pg_locks시작 프로세스용; 그들은 그냥 존재하는 것으로 추정됩니다.
그나기오스플러그인check_pgsql작동할 것입니다. 왜냐하면 확인하는 간단한 정보가 존재합니다.check_postgres모니터링 스크립트는 또한 작동하지만 일부 보고된 값은 다르거나 혼란스러운 결과. 예를 들어 마지막 진공 시간은 다음과 같습니다. 대기 상태에서는 진공이 발생하지 않기 때문에 유지됩니다. 진공청소기 기본에서 실행 중이면 여전히 변경 사항을 대기.
WAL 파일 제어 명령은 복구 중에는 작동하지 않습니다.
예를 들어pg_start_backup,
pg_switch_xlog등.
다음을 포함하여 동적으로 로드 가능한 모듈 작동pg_stat_statements.
보조 잠금은 교착 상태를 포함하여 복구 시 정상적으로 작동합니다. 탐지. 권고 잠금은 WAL에 기록되지 않으므로 주의하세요. 기본 또는 기본 노드에 대한 권고 잠금은 불가능합니다. WAL 재생과 충돌하기 위한 대기. 또한 가능하지 않습니다 기본에 대한 권고 잠금을 획득하고 기본 잠금을 시작하도록 합니다. 대기에 대한 유사한 권고 잠금. 권고 잠금 관련 획득한 서버에만 해당됩니다.
다음과 같은 트리거 기반 복제 시스템슬로니, 론디스트그리고부카르도대기 모드에서는 전혀 실행되지 않습니다. 하지만 그들은 기본 서버에서 행복하게 실행될 것입니다. 변경 사항은 적용할 대기 서버로 전송되지 않습니다. 월 재생은 트리거 기반이 아니므로 추가 데이터베이스 쓰기가 필요한 모든 시스템에 대기 또는 트리거 사용에 의존합니다.
새로운 OID는 할당될 수 없습니다. 그러나 일부UUID발전기는 다음과 같은 한 계속 작동할 수 있습니다. 데이터베이스에 새로운 상태를 기록하는 데 의존하지 않습니다.
현재 임시 테이블 생성은 다음 동안 허용되지 않습니다. 읽기 전용 트랜잭션이므로 어떤 경우에는 기존 스크립트가 올바르게 실행되지 않습니다. 이 제한은 나중에 완화될 수 있습니다. 릴리스. 이는 SQL 표준 준수 문제이자 기술적인 문제입니다.
드롭 테이블스페이스다음의 경우에만 성공할 수 있습니다. 테이블스페이스가 비어 있습니다. 일부 대기 사용자는 활동적일 수 있습니다. 자신의 테이블스페이스를 사용하여temp_tablespaces매개변수. 만약 있다면 테이블스페이스의 임시 파일, 모든 활성 쿼리는 임시 파일이 제거되었는지 확인하기 위해 취소되었으므로 테이블스페이스를 제거하고 WAL 재생을 계속할 수 있습니다.
달리기데이터베이스 삭제또는데이터베이스 변경...테이블스페이스 설정기본에 모든 사용자를 연결하는 WAL 항목을 생성합니다. 대기 데이터베이스에 연결하여 강제로 연결을 끊습니다. 이 작업은 설정에 관계없이 즉시 발생합니다.max_standby_streaming_delay. 참고하세요데이터베이스 변경 ... 이름 바꾸기하지 않습니다 대부분의 경우 눈에 띄지 않게 됩니다. 경우에 따라 프로그램 혼란이 발생할 수 있습니다. 어떤 방식으로든 데이터베이스 이름에 따라 달라집니다.
정상(비복구) 모드에서 발행하는 경우사용자 삭제또는역할 삭제해당 사용자가 아직 로그인 기능이 있는 역할에 대해 연결되면 연결된 사용자에게는 아무 일도 일어나지 않습니다. 연결된 상태를 유지하세요. 그러나 사용자는 다시 연결할 수 없습니다. 이 동작은 복구에도 적용되므로 a사용자 삭제기본 연결이 끊어지지 않습니다 그 사용자는 와이즈 토토 중입니다.
통계 수집기는 복구 중에 활성화됩니다. 모두 스캔, 읽기, 블록, 인덱스 사용 등이 기록됩니다. 평소에는 대기 중입니다. 재생된 작업은 중복되지 않습니다. 기본에 미치는 영향이므로 삽입물을 재생하면 pg_stat_user_tables의 삽입 열을 증가시킵니다. 통계 복구 시작 시 파일이 삭제되므로 기본 대기 상태도 다릅니다. 이는 기능이 아닌 기능으로 간주됩니다. 버그.
복구 중에는 Autovacuum이 활성화되지 않습니다. 시작됩니다 일반적으로 복구가 끝나면.
백그라운드 기록기는 복구 중에 활성화되며 재시작 지점 수행(기본의 체크포인트와 유사) 그리고 일반적인 블록 청소 활동. 여기에는 업데이트가 포함될 수 있습니다. 대기 서버에 저장된 힌트 비트 정보 중 하나입니다.체크포인트명령은 다음 동안 허용됩니다. 복구는 새로운 것이 아닌 재시작 지점을 수행하지만 체크포인트.
다양한 매개변수가 위에서 언급되었습니다.섹션 25.5.2그리고섹션 25.5.3.
기본에서 매개변수wal_level그리고vacuum_defer_cleanup_age사용할 수 있습니다.max_standby_archive_delay그리고max_standby_streaming_delay다음에 설정된 경우 아무런 효과가 없습니다. 기본.
와이즈 토토시 매개변수hot_standby, max_standby_archive_delay그리고max_standby_streaming_delay사용할 수 있습니다.vacuum_defer_cleanup_age서버가 와이즈 토토 모드에 있는 한 아무런 효과가 없습니다. 하지만 와이즈 토토 상태가 되면 관련성이 높아집니다. 기본.
상시 와이즈 토토에는 몇 가지 제한 사항이 있습니다. 이들은 할 수 있고 아마도 향후 릴리스에서 수정될 것입니다.
해시 인덱스에 대한 작업은 현재 WAL에 기록되지 않습니다. 따라서 재생에서는 이러한 색인을 업데이트하지 않습니다.
트랜잭션 실행에 대한 완전한 지식이 필요합니다 스냅샷을 찍기 전에 대규모를 사용하는 거래 하위 트랜잭션 수(현재 64개보다 큼)는 읽기 전용 연결 시작을 지연할 때까지 가장 오래 실행되는 쓰기 트랜잭션이 완료되었습니다. 만약에 이런 상황이 발생하면 설명 메시지가 다음으로 전송됩니다. 서버 로그입니다.
대기 쿼리의 유효한 시작점이 생성되었습니다. 마스터의 각 체크포인트에서. 대기가 종료된 경우 마스터가 종료 상태인 동안에는 다운되지 않을 수 있습니다. 기본이 완료될 때까지 Hot Standby로 다시 들어갈 수 있습니다. 시작하여 추가 시작점을 생성합니다. WAL 로그. 이 상황은 대부분 문제가 되지 않습니다 일어날 수 있는 일반적인 상황. 일반적으로 다음과 같은 경우 기본이 종료되어 더 이상 사용할 수 없습니다. 대기가 필요한 심각한 오류로 인해 발생했을 가능성이 높습니다. 어쨌든 새로운 기본으로 작동하도록 변환됩니다. 그리고 기본이 의도적으로 실행되는 상황에서 제거하고 대기 상태가 되도록 조정합니다. 새로운 기본 절차도 원활하게 표준 절차입니다.
복구가 끝나면,AccessExclusiveLocks준비된 사람이 보유함 트랜잭션에는 일반 잠금 수의 두 배가 필요합니다. 테이블 항목. 많은 수를 실행하려는 경우 일반적으로 수행되는 동시 준비된 트랜잭션 수AccessExclusiveLocks또는 귀하의 계획 많은 시간이 소요되는 하나의 대규모 거래에 대해AccessExclusiveLocks, 다음을 수행하는 것이 좋습니다. 더 큰 값을 선택하세요.max_locks_per_transaction아마도 그 정도 기본 서버에 있는 매개변수 값의 두 배입니다. 설정이 다음과 같은 경우에는 이를 전혀 고려할 필요가 없습니다.max_prepared_transactions이다 0.
직렬화 가능한 트랜잭션 격리 수준이 아직 없습니다. 핫 대기 상태에서 사용할 수 있습니다. (참조섹션 13.2.3그리고섹션 13.4.1자세한 내용은.) 트랜잭션을 다음으로 설정하려고 시도했습니다. 상시 대기 모드의 직렬화 가능 격리 수준은 오류가 발생합니다.