이 문서는 지원되지 않는 PostgreSQL 버전에 대한 것입니다.
당신은 다음과 같은 페이지를 보고 싶을 수도 있습니다.PostgreSQL : 문서 : 17 : 26.4. 뜨거운 토토 핫버전 또는 위에 나열된 다른 지원 버전 중 하나를 사용하세요.

26.5. 핫 토토 사이트

상시 토토 사이트는 서버가 아카이브 복구 또는 토토 사이트 모드에 있는 동안 서버에 연결하고 읽기 전용 쿼리를 실행하는 기능을 설명하는 데 사용되는 용어입니다. 이는 복제 목적과 매우 정밀하게 백업을 원하는 상태로 복원하는 데 모두 유용합니다. 상시 토토 사이트라는 용어는 사용자가 쿼리를 계속 실행하거나 연결을 계속 열어 두는 동안 서버가 복구에서 정상 작동으로 전환하는 기능을 의미하기도 합니다.

상시 토토 사이트 모드에서 쿼리를 실행하는 것은 일반 쿼리 작업과 유사하지만 아래에 설명된 몇 가지 사용법 및 관리상의 차이점이 있습니다.

26.5.1. 사용자 개요

hot_standby매개변수가 토토 사이트 서버에서 true로 설정되면 복구를 통해 시스템이 일관된 상태로 전환되면 연결 허용이 시작됩니다. 이러한 모든 연결은 엄격히 읽기 전용입니다. 임시 테이블도 작성되지 않을 수 있습니다.

대기 서버의 데이터는 기본 서버에서 도착하는 데 약간의 시간이 걸리므로 기본 서버와 대기 서버 사이에 상당한 지연이 발생합니다. 따라서 기본 및 대기 모두에서 동일한 쿼리를 거의 동시에 실행하면 서로 다른 결과가 반환될 수 있습니다. 대기 중인 데이터는 다음과 같습니다.최종 일관성기본과 함께. 트랜잭션에 대한 커밋 레코드가 대기에서 재생되면 해당 트랜잭션에 의한 변경 사항이 대기에서 생성된 모든 새 스냅샷에 표시됩니다. 현재 트랜잭션 격리 수준에 따라 각 쿼리 시작 시 또는 각 트랜잭션 시작 시 스냅샷이 생성될 수 있습니다. 자세한 내용은 다음을 참조하세요.토토 사이트 PostgreSQL : 문서 : 10 : 13.2. 거래 격리.

상시 대기 중에 시작된 트랜잭션은 다음 명령을 실행할 수 있습니다:

  • 쿼리 액세스 -선택, 복사 대상

  • 커서 명령 -선언, 가져오기, 닫기

  • 매개변수 -표시, SET, 리셋

  • 거래 관리 명령

    • 시작, END, 중단, 거래 시작

    • 세이브포인트, 출시, 세이브포인트로 롤백

    • 예외블록 및 기타 내부 하위 트랜잭션

  • 락 테이블, 단, 명시적으로 다음 모드 중 하나에 있는 경우에만 해당됩니다.액세스 공유, 행 공유또는행 독점.

  • 계획 및 자원 -준비, 실행, 해제, 삭제

  • 플러그인 및 확장 -로드

  • 듣지 않음

상시 대기 중에 시작된 트랜잭션에는 트랜잭션 ID가 할당되지 않으며 시스템 미리 쓰기 로그에 쓸 수 없습니다. 따라서 다음 작업을 수행하면 오류 메시지가 생성됩니다.

  • 데이터 조작 언어(DML) -삽입, 업데이트, 삭제, 다음에서 복사, 잘라내기. 복구 중에 트리거가 실행되도록 하는 허용된 작업은 없습니다. 이 제한은 임시 테이블에도 적용됩니다. 왜냐하면 트랜잭션 ID를 할당하지 않으면 테이블 행을 읽거나 쓸 수 없기 때문입니다. 이는 현재 Hot Standby 환경에서는 불가능합니다.

  • 데이터 정의 언어(DDL) -생성, 드롭, 변경, 댓글. 이러한 작업을 수행하려면 시스템 카탈로그 테이블을 업데이트해야 하기 때문에 이 제한 사항은 임시 테이블에도 적용됩니다.

  • 선택... 공유용 | 업데이트, 기본 데이터 파일을 업데이트하지 않으면 행 잠금을 수행할 수 없기 때문입니다.

  • 규칙선택DML 명령을 생성하는 명령문.

  • 잠금보다 높은 모드를 명시적으로 요청하는행 독점 모드.

  • 잠금요청하기 때문에 짧은 기본 형식으로액세스 독점 모드.

  • 읽기 전용이 아닌 상태를 명시적으로 설정하는 트랜잭션 관리 명령:

    • 읽기 쓰기 시작, 트랜잭션 시작 읽기 쓰기

    • 트랜잭션 읽기 쓰기 설정, 세션 특성을 트랜잭션 읽기 쓰기로 설정

    • SET transaction_read_only = 꺼짐

  • 2단계 커밋 명령 -거래 준비, 커밋 준비됨, 롤백 준비됨읽기 전용 트랜잭션이라도 준비 단계(2단계 커밋의 첫 번째 단계)에서 WAL을 작성해야 하기 때문입니다.

  • 시퀀스 업데이트 -다음값(), setval()

  • 듣기, 알림

정상 작동 시,읽기 전용거래를 사용할 수 있습니다듣기그리고알림, 따라서 Hot Standby 세션은 일반 읽기 전용 세션보다 약간 더 엄격한 제한 하에 작동합니다. 향후 릴리스에서는 이러한 제한 사항 중 일부가 완화될 수 있습니다.

상시 토토 사이트 중 매개변수transaction_read_only항상 참이며 변경될 수 없습니다. 그러나 데이터베이스 수정을 시도하지 않는 한, 상시 대기 중 연결은 다른 데이터베이스 연결과 유사하게 작동합니다. 장애 조치 또는 전환이 발생하면 데이터베이스는 일반 처리 모드로 전환됩니다. 서버가 모드를 변경하는 동안 세션은 연결된 상태로 유지됩니다. 상시 대기가 완료되면 읽기-쓰기 트랜잭션을 시작할 수 있습니다(상시 대기 중에 시작된 세션에서도 가능).

사용자는 다음을 실행하여 세션이 읽기 전용인지 알 수 있습니다.SHOW transaction_read_only. 또한 일련의 함수(표 9.80)를 사용하면 사용자가 대기 서버에 대한 정보에 액세스할 수 있습니다. 이를 통해 데이터베이스의 현재 상태를 인식하는 프로그램을 작성할 수 있습니다. 이는 복구 진행 상황을 모니터링하거나 데이터베이스를 특정 상태로 복원하는 복잡한 프로그램을 작성하는 데 사용할 수 있습니다.

26.5.2. 쿼리 충돌 처리

기본 및 대기 서버는 여러 면에서 느슨하게 연결되어 있습니다. 기본에 대한 작업은 대기에 영향을 미칩니다. 결과적으로 그들 사이에는 부정적인 상호 작용이나 갈등이 발생할 가능성이 있습니다. 가장 이해하기 쉬운 충돌은 성능입니다. 기본에서 대규모 데이터 로드가 발생하면 대기에서 유사한 WAL 레코드 스트림이 생성되므로 대기 쿼리는 I/O와 같은 시스템 리소스를 놓고 경합할 수 있습니다.

또한 Hot Standby에서 발생할 수 있는 추가 충돌 유형이 있습니다. 이러한 충돌은심각한 갈등쿼리를 취소해야 할 수도 있고 어떤 경우에는 쿼리를 해결하기 위해 세션 연결을 끊을 수도 있습니다. 사용자에게는 이러한 충돌을 처리할 수 있는 여러 가지 방법이 제공됩니다. 충돌 사례에는 다음이 포함됩니다.

  • 명시적 잠금을 포함하여 기본 서버에서 단독 잠금에 액세스잠금명령 및 다양한DDL작업, 토토 사이트 쿼리의 테이블 액세스와 충돌합니다.

  • 기본 작업 파일에 대해 해당 테이블스페이스를 사용하는 대기 쿼리와 기본 충돌에 테이블스페이스를 삭제합니다.

  • 기본 데이터베이스에 데이터베이스를 삭제하면 대기 데이터베이스에 연결된 세션과 충돌합니다.

  • WAL의 진공 정리 기록 적용은 스냅샷이 여전히 가능한 토토 사이트 트랜잭션과 충돌합니다.참조제거할 행 중 하나.

  • WAL에서 진공 정리 레코드를 적용하면 제거할 데이터가 표시되는지 여부에 관계없이 대기에서 대상 페이지에 액세스하는 쿼리와 충돌합니다.

주 서버에서 이러한 경우는 단순히 기다리게 됩니다. 사용자는 충돌하는 작업 중 하나를 취소하도록 선택할 수 있습니다. 그러나 대기에서는 선택의 여지가 없습니다. WAL에 기록된 작업이 기본에서 이미 발생했으므로 대기에서는 이를 적용하는 데 실패해서는 안 됩니다. 게다가 WAL 애플리케이션이 무기한 대기하도록 허용하는 것은 대기 상태가 기본 상태보다 점점 더 뒤쳐지기 때문에 매우 바람직하지 않을 수 있습니다. 따라서 적용할 WAL 레코드와 충돌하는 대기 쿼리를 강제로 취소하는 메커니즘이 제공됩니다.

문제 상황의 예는 실행 중인 기본 서버의 관리자입니다.드롭 테이블현재 대기 서버에서 쿼리 중인 테이블. 분명히 다음과 같은 경우 대기 쿼리를 계속할 수 없습니다.드롭 테이블토토 사이트 모드에 적용됩니다. 이 상황이 기본에서 발생한 경우,드롭 테이블다른 쿼리가 완료될 때까지 기다립니다. 하지만 언제드롭 테이블는 기본에서 실행되지만 기본은 대기에서 어떤 쿼리가 실행되고 있는지에 대한 정보가 없으므로 그러한 대기 쿼리를 기다리지 않습니다. 대기 쿼리가 계속 실행되는 동안 WAL 변경 기록이 대기 쿼리로 전달되어 충돌이 발생합니다. 대기 서버는 WAL 레코드(그리고 그 이후의 모든 것)의 적용을 지연하거나 충돌하는 쿼리를 취소해야 합니다.드롭 테이블적용할 수 있습니다.

충돌하는 쿼리가 짧은 경우 일반적으로 WAL 적용을 약간 지연시켜 쿼리가 완료되도록 하는 것이 바람직합니다. 그러나 WAL 적용이 오래 지연되는 것은 일반적으로 바람직하지 않습니다. 따라서 취소 메커니즘에는 매개변수가 있습니다.max_standby_archive_delay그리고max_standby_streami토토 사이트_delay, WAL 애플리케이션에서 허용되는 최대 지연을 정의합니다. 새로 수신된 WAL 데이터를 적용하는 데 관련 지연 설정보다 오래 걸리면 충돌하는 쿼리가 취소됩니다. 아카이브에서 WAL 데이터를 읽는 경우(즉, 기본 백업에서 초기 복구 또는따라잡기훨씬 뒤처진 토토 사이트 서버)와 스트리밍 복제를 통해 WAL 데이터를 읽는 것.

주로 고가용성을 위해 존재하는 대기 서버에서는 지연 매개변수를 상대적으로 짧게 설정하는 것이 가장 좋습니다. 그러면 대기 쿼리로 인한 지연으로 인해 서버가 기본 서버보다 크게 뒤쳐지지 않습니다. 그러나 대기 서버가 장기 실행 쿼리를 실행하기 위한 것이라면 높거나 심지어 무한한 지연 값이 바람직할 수 있습니다. 그러나 장기 실행 쿼리로 인해 WAL 레코드 적용이 지연되면 대기 서버의 다른 세션이 기본 서버의 최근 변경 사항을 확인하지 못할 수 있다는 점을 명심하세요.

지연이 다음으로 지정되면max_standby_archive_delay또는max_standby_streami토토 사이트_delay초과되었습니다. 충돌하는 쿼리는 취소됩니다. 일반적으로 취소 오류가 발생하지만, 재생하는 경우는 다음과 같습니다.데이터베이스 삭제충돌하는 전체 세션이 종료됩니다. 또한 유휴 트랜잭션이 보유한 잠금으로 인해 충돌이 발생하는 경우 충돌하는 세션이 종료됩니다(이 동작은 향후 변경될 수 있음).

취소된 쿼리는 즉시 재시도될 수 있습니다(물론 새 트랜잭션을 시작한 후). 쿼리 취소는 재생되는 WAL 레코드의 성격에 따라 달라지므로 취소된 쿼리가 다시 실행되면 성공할 수도 있습니다.

지연 매개변수는 WAL 데이터가 대기 서버에 의해 수신된 이후 경과된 시간과 비교된다는 점을 명심하십시오. 따라서 대기에서 하나의 쿼리에 허용되는 유예 기간은 지연 매개변수를 초과하지 않으며, 이전 쿼리가 완료될 때까지 기다리거나 과도한 업데이트 로드를 따라갈 수 없어 대기가 이미 뒤쳐진 경우 상당히 짧아질 수 있습니다.

토토 사이트 쿼리와 WAL 재생 간의 충돌이 발생하는 가장 일반적인 이유는조기 정리. 보통,PostgreSQLMVCC 규칙에 따라 데이터의 올바른 가시성을 보장하기 위해 확인해야 하는 트랜잭션이 없는 경우 이전 행 버전을 정리할 수 있습니다. 그러나 이 규칙은 마스터에서 실행되는 트랜잭션에만 적용될 수 있습니다. 따라서 마스터에서 정리하면 대기의 트랜잭션에 여전히 표시되는 행 버전이 제거될 수 있습니다.

숙련된 사용자는 행 버전 정리와 행 버전 고정 모두 잠재적으로 대기 쿼리와 충돌할 수 있다는 점에 유의해야 합니다. 매뉴얼 실행진공 동결업데이트되거나 삭제된 행이 없는 테이블에서도 충돌을 일으킬 가능성이 있습니다.

기본 서버에서 정기적으로 많이 업데이트되는 테이블은 대기 서버에서 오래 실행되는 쿼리를 빠르게 취소하게 된다는 점을 사용자는 분명히 알아야 합니다. 그러한 경우에 대한 유한 값 설정max_standby_archive_delay또는max_standby_streami토토 사이트_delay설정과 유사하다고 볼 수 있음statement_timeout.

토토 사이트 쿼리 취소 횟수가 허용할 수 없는 것으로 확인되면 해결 가능성이 있습니다. 첫 번째 옵션은 매개변수를 설정하는 것입니다.hot_standby_feedback, 방지진공최근에 죽은 행을 제거하므로 정리 충돌이 발생하지 않습니다. 이렇게 하면 기본 테이블에서 데드 행 정리가 지연되어 바람직하지 않은 테이블 팽창이 발생할 수 있다는 점에 유의해야 합니다. 그러나 정리 상황은 대기 쿼리가 기본 서버에서 직접 실행되는 경우보다 나쁘지 않으며 실행을 대기 서버로 오프로드하는 이점을 계속 누리고 있습니다. 대기 서버가 자주 연결되고 연결이 끊어지는 경우 해당 기간을 처리하기 위해 조정을 원할 수 있습니다.hot_standby_feedback피드백이 제공되지 않습니다. 예를 들어 증가하는 것을 고려하십시오.max_standby_archive_delay연결이 끊어진 기간 동안 WAL 아카이브 파일의 충돌로 인해 쿼리가 빠르게 취소되지 않도록 합니다. 또한 증가를 고려해야 합니다.max_standby_streami토토 사이트_delay재연결 후 새로 도착한 스트리밍 WAL 항목으로 인한 빠른 취소를 방지합니다.

또 다른 옵션은 증가하는 것입니다.vacuum_defer_cleanup_age주 서버에서, 데드 행이 평소처럼 빨리 정리되지 않도록 합니다. 이렇게 하면 높은 값을 설정하지 않고도 쿼리가 대기 모드에서 취소되기 전에 실행되는 데 더 많은 시간이 허용됩니다.max_standby_streami토토 사이트_delay. 그러나 이 접근 방식으로는 특정 실행 시간 창을 보장하기 어렵습니다. 왜냐하면vacuum_defer_cleanup_age주 서버에서 실행된 트랜잭션으로 측정됩니다.

쿼리가 취소된 횟수와 그 이유는 다음을 사용하여 볼 수 있습니다.pg_stat_database_contributes토토 사이트 서버의 시스템 보기. 그만큼pg_stat_database시스템 보기에는 요약 정보도 포함되어 있습니다.

26.5.3. 관리자 개요

만약hot_standbyis켜짐inpostgresql.conf(기본값) 및 다음이 있습니다.recovery.conf파일이 존재하면 서버는 상시 대기 모드로 실행됩니다. 그러나 쿼리를 실행할 수 있는 일관된 상태를 제공할 만큼 충분한 복구가 완료될 때까지 서버가 연결을 수락하지 않기 때문에 핫 대기 연결이 허용되는 데 다소 시간이 걸릴 수 있습니다. 이 기간 동안 클라이언트의 연결 시도는 오류 메시지와 함께 거부됩니다. 서버가 작동하는지 확인하려면 애플리케이션 연결 시도를 반복하거나 서버 로그에서 다음 메시지를 찾아보세요.

로그: 대기 모드 진입

... 그러다가 얼마 후...

로그: 일관된 복구 상태에 도달함
로그: 데이터베이스 시스템이 읽기 전용 연결을 허용할 준비가 되었습니다.

일관성 정보는 기본 체크포인트당 한 번씩 기록됩니다. 다음 기간 동안 작성된 WAL을 읽는 경우 핫 대기를 활성화할 수 없습니다.wal_level다음으로 설정되지 않았습니다복제본또는논리적기본에. 다음 두 가지 조건이 모두 있는 경우 일관된 상태에 도달하는 것이 지연될 수도 있습니다.

  • 쓰기 트랜잭션에 64개 이상의 하위 트랜잭션이 있습니다.

  • 매우 긴 쓰기 트랜잭션

파일 기반 로그 전달("웜 대기")을 실행 중인 경우 다음 WAL 파일이 도착할 때까지 기다려야 할 수 있습니다.archive_timeout기본 설정.

대기의 일부 매개변수 설정은 기본에서 변경된 경우 재구성이 필요합니다. 이러한 매개변수의 경우 대기의 값은 기본의 값보다 크거나 같아야 합니다. 이러한 매개변수가 충분히 높게 설정되지 않으면 대기가 시작을 거부합니다. 그런 다음 더 높은 값을 제공하고 서버를 다시 시작하여 복구를 다시 시작할 수 있습니다. 이러한 매개변수는 다음과 같습니다.

  • max_connections

  • max_prepared_transactions

  • max_locks_per_transaction

  • max_worker_processes

관리자가 다음에 대한 적절한 설정을 선택하는 것이 중요합니다.max_standby_archive_delay그리고max_standby_streami토토 사이트_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복구에 의해 재생되는 트랜잭션에 의해 보관됩니다. 시작 프로세스는 데이터베이스 변경을 위해 잠금을 획득하지 않으므로 다음 이외의 잠금을 수행합니다.액세스 배타적 잠금다음에 표시되지 않음pg_locks시작 프로세스용; 단지 존재한다고 추정될 뿐입니다.

나기오스플러그인check_pgsql검사하는 간단한 정보가 존재하기 때문에 작동합니다. 그만큼check_postgres모니터링 스크립트도 작동하지만 일부 보고된 값은 다르거나 혼란스러운 결과를 제공할 수 있습니다. 예를 들어, 대기 모드에서는 진공이 발생하지 않으므로 마지막 진공 시간은 유지되지 않습니다. 기본에서 실행 중인 진공 청소기는 여전히 변경 사항을 대기로 보냅니다.

WAL 파일 제어 명령은 복구 중에 작동하지 않습니다. 예:pg_start_backup, pg_switch_wal등.

다음을 포함하여 동적으로 로드 가능한 모듈이 작동합니다.pg_stat_statements.

보조 잠금은 교착 상태 감지를 포함하여 복구 시 정상적으로 작동합니다. 권고 잠금은 WAL에 기록되지 않으므로 기본 또는 대기의 권고 잠금이 WAL 재생과 충돌하는 것은 불가능합니다. 또한 기본에서 권고 잠금을 획득하고 대기에서 유사한 권고 잠금을 시작하도록 하는 것도 불가능합니다. 권고 잠금은 해당 잠금을 획득한 서버에만 관련됩니다.

다음과 같은 트리거 기반 복제 시스템슬로니, 론디스트그리고부카르도대기 서버에서는 전혀 실행되지 않습니다. 그러나 변경 사항이 대기 서버에 적용되지 않는 한 기본 서버에서는 정상적으로 실행됩니다. WAL 재생은 트리거 기반이 아니므로 추가 데이터베이스 쓰기가 필요하거나 트리거 사용에 의존하는 시스템으로 대기 시스템에서 릴레이할 수 없습니다.

새로운 OID는 할당될 수 없습니다. 그러나 일부UUID생성기는 데이터베이스에 새 상태를 기록하는 데 의존하지 않는 한 계속 작동할 수 있습니다.

현재 읽기 전용 트랜잭션 중에는 임시 테이블 생성이 허용되지 않으므로 어떤 경우에는 기존 스크립트가 올바르게 실행되지 않습니다. 이 제한사항은 이후 릴리스에서 완화될 수 있습니다. 이는 SQL 표준 준수 문제이자 기술 문제입니다.

드롭 테이블스페이스테이블스페이스가 비어 있는 경우에만 성공할 수 있습니다. 일부 토토 사이트 사용자는 자신의 테이블스페이스를 적극적으로 사용하고 있을 수 있습니다.temp_tablespaces매개변수. 테이블스페이스에 임시 파일이 있는 경우 모든 활성 쿼리가 취소되어 임시 파일이 제거되었는지 확인하므로 테이블스페이스를 제거하고 WAL 재생을 계속할 수 있습니다.

실행 중데이터베이스 삭제또는데이터베이스 변경...테이블스페이스 설정기본 데이터베이스는 대기 데이터베이스에 연결된 모든 사용자를 강제로 연결 해제하는 WAL 항목을 생성합니다. 이 작업은 설정에 관계없이 즉시 발생합니다.max_standby_streami토토 사이트_delay. 참고하세요데이터베이스 변경 ... 이름 바꾸기사용자의 연결을 끊지 않습니다. 대부분의 경우 눈에 띄지 않게 됩니다. 그러나 어떤 경우에는 데이터베이스 이름에 따라 프로그램 혼란이 발생할 수 있습니다.

정상(비복구) 모드에서 발행하는 경우사용자 삭제또는역할 삭제로그인 기능이 있는 역할의 경우 해당 사용자가 아직 연결되어 있는 동안 연결된 사용자에게는 아무 일도 일어나지 않습니다. 그들은 연결된 상태를 유지합니다. 그러나 사용자는 다시 연결할 수 없습니다. 이 동작은 복구에도 적용되므로 a사용자 삭제기본에서는 토토 사이트에서 해당 사용자의 연결을 끊지 않습니다.

통계 수집기는 복구 중에 활성화됩니다. 모든 스캔, 읽기, 블록, 인덱스 사용 등은 대기에서 정상적으로 기록됩니다. 재생된 작업은 기본에 미치는 영향을 복제하지 않으므로 삽입을 재생해도 pg_stat_user_tables의 삽입 열이 증가하지 않습니다. 통계 파일은 복구 시작 시 삭제되므로 기본 및 대기의 통계가 다릅니다. 이는 버그가 아닌 기능으로 간주됩니다.

복구 중에는 Autovacuum이 활성화되지 않습니다. 복구가 끝나면 정상적으로 시작됩니다.

체크포인터 프로세스와 백그라운드 기록기 프로세스는 복구 중에 활성화됩니다. 체크포인터 프로세스는 재시작점(기본의 체크포인트와 유사)을 수행하고 백그라운드 기록기 프로세스는 일반적인 블록 정리 작업을 수행합니다. 여기에는 대기 서버에 저장된 힌트 비트 정보의 업데이트가 포함될 수 있습니다. 그만큼체크포인트명령은 복구 중에 허용되지만 새 체크포인트가 아닌 재시작 포인트를 수행합니다.

26.5.4. 상시 대기 매개변수 참조

다양한 매개변수가 위에서 언급되었습니다.섹션 26.5.2그리고섹션 26.5.3.

기본에서 매개변수wal_level그리고vacuum_defer_cleanup_age사용할 수 있습니다.max_standby_archive_delay그리고max_standby_streami토토 사이트_delay기본에 설정된 경우 아무런 효과가 없습니다.

토토 사이트시 매개변수hot_standby, max_standby_archive_delay그리고max_standby_streami토토 사이트_delay사용할 수 있습니다.vacuum_defer_cleanup_age서버가 토토 사이트 모드에 있는 한 아무 효과가 없지만, 토토 사이트 모드가 기본 모드가 되면 관련이 있습니다.

26.5.5. 주의사항

상시 토토 사이트에는 몇 가지 제한 사항이 있습니다. 이러한 문제는 향후 릴리스에서 수정될 수 있으며 아마도 수정될 것입니다.

  • 스냅샷을 찍기 전에 실행 중인 트랜잭션에 대한 완전한 지식이 필요합니다. 많은 수의 하위 트랜잭션(현재 64개 이상)을 사용하는 트랜잭션은 가장 오래 실행되는 쓰기 트랜잭션이 완료될 때까지 읽기 전용 연결의 시작을 지연시킵니다. 이러한 상황이 발생하면 설명 메시지가 서버 로그로 전송됩니다.

  • 대기 쿼리의 유효한 시작점은 마스터의 각 체크포인트에서 생성됩니다. 마스터가 종료 상태에 있는 동안 대기가 종료되면 기본이 시작될 때까지 핫 대기에 다시 들어가지 못할 수 있으므로 WAL 로그에 추가 시작점이 생성됩니다. 이러한 상황은 발생할 수 있는 가장 일반적인 상황에서는 문제가 되지 않습니다. 일반적으로 기본이 종료되어 더 이상 사용할 수 없는 경우 대기가 새 기본으로 작동하도록 변환되어야 하는 심각한 오류로 인한 것일 수 있습니다. 그리고 기본이 의도적으로 중단되는 상황에서는 대기가 원활하게 새로운 기본이 되도록 조정하는 것도 표준 절차입니다.

  • 복구가 끝나면,액세스 배타적 잠금42398_42591AccessExclusiveLocks, 또는 많은 시간이 소요되는 하나의 대규모 트랜잭션을 계획하고 있는 경우AccessExclusiveLocks,의 더 큰 값을 선택하는 것이 좋습니다.max_locks_per_transaction, 아마도 기본 서버에 있는 매개변수 값의 두 배 정도일 것입니다. 설정이 다음과 같은 경우에는 이를 전혀 고려할 필요가 없습니다.max_prepared_transactions0입니다.

  • 직렬화 가능한 트랜잭션 격리 수준은 아직 상시 토토 사이트 상태에서 사용할 수 없습니다. (보다섹션 13.2.3그리고섹션 13.4.1자세한 내용은.) 상시 토토 사이트 모드에서 트랜잭션을 직렬화 가능 격리 수준으로 설정하려고 하면 오류가 발생합니다.