26.2. 로그쉽 토토 서버#

연속 아카이브를 사용하여 A고 가용성(HA) 하나 이상의 클러스터 구성토토 서버기본 서버가 실패하면 작업을 인수 할 준비가되었습니다. 이 기능은 널리이라고합니다.따뜻한 토토또는로그 배송.

기본 및 토토 서버는이 기능을 제공하기 위해 함께 작동하지만 서버는 느슨하게 연결되어 있습니다. 기본 서버는 연속 아카이빙 모드에서 작동하는 반면 각 토토 서버는 연속 복구 모드에서 작동하며 기본에서 WAL 파일을 읽습니다.

한 데이터베이스 서버에서 다른 데이터베이스 서버로 직접 이동하는 WAL 레코드를 일반적으로 로그 배송으로 설명합니다.postgresql한 번에 WAL Records 한 파일 (WAL 세그먼트)을 전송하여 파일 기반 로그 배송을 구현합니다. Wal Files (16MB)는 인접 시스템, 동일한 사이트의 다른 시스템 또는 전세계의 다른 시스템에 관계없이 모든 거리에 걸쳐 쉽고 저렴하게 배송 할 수 있습니다.섹션 26.2.5).

로그 배송이 비동기식이라는 점에 유의해야합니다. 결과적으로 기본 서버가 치명적인 실패를 겪을 경우 데이터 손실의 창이 있습니다.archive_timeout매개 변수는 몇 초만에 낮게 설정할 수 있습니다. 그러나 이러한 낮은 설정은 파일 배송에 필요한 대역폭을 크게 증가시킵니다.섹션 26.2.5) 훨씬 더 작은 데이터 손실 창을 허용합니다.

회복 성능은 대기가 일반적으로 활성화되면 전체 가용성에서 멀리 떨어진 순간 일 정도로 충분히 좋습니다. 결과적으로이를 고 가용성을 제공하는 따뜻한 토토 구성이라고합니다.뜨거운 토토서버. 보다PostgreSQL : 문서 : 17 : 26.4. 뜨거운 토토 핫자세한 내용은

26.2.1. 계획#

일반적으로 기본 및 토토 서버를 작성하여 최소한 데이터베이스 서버의 관점에서 가능한 한 비슷하도록하는 것이 현명합니다. 특히, 테이블 스페이스와 관련된 경로 이름은 수정되지 않은 것으로 전달되므로 기본 서버와 토토 서버는 해당 기능을 사용하는 경우 테이블 스페이스에 대해 동일한 마운트 경로를 가져야합니다.테이블 스페이스 생성기본에서 실행됩니다. 명령이 실행되기 전에 기본 및 모든 토토 서버에서 필요한 새로운 마운트 포인트를 작성해야합니다. 하드웨어는 정확히 동일 할 필요는 없지만 경험에 따르면 두 개의 동일한 시스템을 유지하는 것이 응용 프로그램과 시스템의 수명 동안 두 개의 다른 시스템을 유지하는 것보다 쉽습니다.

일반적으로, 다른 전공을 실행하는 서버 간의 로그 배송postgresql릴리스 레벨이 불가능합니다. PostgreSQL Global Development 그룹의 정책은 사소한 릴리스 업그레이드 중에 디스크 형식을 변경하지 않기 때문에 기본 및 토토 서버에서 다른 사소한 릴리스 레벨을 실행하는 것이 성공적으로 작동 할 가능성이 높습니다.

26.2.2. 토토 서버 작동#

a이면 서버가 토토 모드로 들어갑니다 and 파일은 서버가 시작될 때 데이터 디렉토리에 존재합니다.

대기 모드에서 서버는 기본 서버에서 수신 된 WAL을 지속적으로 적용합니다. 토토 서버는 WAL 아카이브에서 WAL을 읽을 수 있습니다 (참조Restore_command) 또는 TCP 연결 (스트리밍 복제)을 통해 1 차에서 직접 직접. 토토 서버는 또한 대기 클러스터에서 발견 된 WAL을 복원하려고 시도합니다.PG_WAL디렉토리. 이는 일반적으로 서버가 다시 시작된 후에 발생합니다. 토토가 다시 시작되기 전에 기본에서 스트리밍 된 토토 WAL이 다시 재생되면 수동으로 파일을 복사 할 수도 있습니다.PG_WAL언제든지 재생할 수 있습니다.

시작시 토토는 아카이브 위치에서 사용 가능한 모든 WAL을 복원하여 시작합니다.Restore_command. WAL의 끝에 도달하면Restore_command실패하면, 이용 가능한 WAL을 복원하려고합니다PG_WAL디렉토리. 실패하고 스트리밍 복제가 구성되면 대기는 기본 서버에 연결하고 아카이브 또는에있는 마지막 유효한 레코드에서 WAL을 스트리밍하기 시작합니다.PG_WAL. 실패하거나 스트리밍 복제가 구성되지 않거나 연결이 나중에 분리 된 경우 토토는 1 단계로 돌아가 아카이브에서 파일을 다시 복원하려고합니다.PG_WAL, 그리고 서버가 중지되거나 홍보 될 때까지 스트리밍 복제가 계속됩니다.

토토 모드가 종료되고 서버가 정상 작동으로 전환됩니다PG_CTL PROMOTE실행 또는pg_promote ()호출됩니다. 장애 조치 전에 모든 WAL이 아카이브 또는에서 즉시 사용할 수 있습니다.PG_WAL복원되지만 1 차에 연결하려는 시도는 없습니다.

26.2.3. 토토 서버의 기본 준비#

토토에서 액세스 할 수있는 기본 및 아카이브 디렉토리에서 연속 아카이브를 설정하여토토 캔 PostgreSQL : 문서 : 17 : 25.3. 연속 보관 및 시점 복구 (PITR). 기본이 다운 되어도 대기에서 아카이브 위치에 액세스 할 수 있어야합니다. 즉, 기본 서버가 아닌 토토 서버 자체 또는 다른 신뢰할 수있는 서버에 상주해야합니다..

스트리밍 복제를 사용하려면 기본 서버에서 인증을 설정하여 토토 서버에서 복제 연결을 허용합니다. 즉, 역할을 만들고 적절한 항목 또는 항목을 제공합니다on데이터베이스 필드가 설정된 상태복제. 또한 보장max_wal_senders기본 서버의 구성 파일에서 충분히 큰 값으로 설정되어 있습니다. 복제 슬롯을 사용하는 경우max_replication_slots충분히 높게 설정되어 있습니다.

에 설명 된대로베이스 백업을 가져옵니다섹션 25.3.2토토 서버를 부트 스트랩합니다.

26.2.4. 토토 서버 설정#

토토 서버를 설정하려면 기본 서버에서 가져온베이스 백업을 복원하십시오 (참조섹션 25.3.5). 파일 만들기and토토 클러스터 데이터 디렉토리에서. 세트Restore_commandWAL 아카이브에서 파일을 복사하는 간단한 명령. 고 가용성 목적으로 여러 토토 서버를 사용할 계획이라면복구 _target_timeline로 설정되었습니다최신(기본값), 토토 서버가 다른 대기로 장애 조치에서 발생하는 타임 라인 변경을 따르기 위해.

Note

Restore_command파일이 존재하지 않으면 즉시 반환해야합니다. 필요한 경우 서버가 명령을 다시 재 시도합니다.

스트리밍 복제를 사용하려면 채우기Primary_conninfo호스트 이름 (또는 IP 주소)을 포함하여 LIBPQ 연결 문자열 및 기본 서버에 연결하는 데 필요한 추가 세부 사항이 있습니다. 기본에 인증을 위해 암호가 필요한 경우 비밀번호를 지정해야합니다.Primary_conninfo

고 가용성 목적으로 토토 서버를 설정하는 경우, 토토 서버가 장애 조치 후 기본 서버로 작동하기 때문에 기본 서버와 같은 WAL 아카이빙, 연결 및 인증을 설정합니다..

WAL 아카이브를 사용하는 경우를 사용하여 크기를 최소화 할 수 있습니다.archive_cleanup_command더 이상 토토 서버에서 필요하지 않은 파일을 제거하는 매개 변수. 그만큼PG_ARCHIVECLEANUP유틸리티는 특별히 사용하도록 특별히 설계되었습니다archive_cleanup_command일반적인 단일 스탠드 구성에서 참조PG_ARCHIVECLEANUP. 그러나 백업 목적으로 아카이브를 사용하는 경우 더 이상 대기에 필요하지 않더라도 최소한 최신 기본 백업에서 복구하는 데 필요한 파일을 유지해야합니다..

구성의 간단한 예는 다음과 같습니다.

Primary_conninfo = 'host = 192.168.1.50 port = 5432 user = foo password = foopass 옵션 =' '-c wal_sender_timeout = 5000' ''

여러 토토 서버를 가질 수 있지만 스트리밍 복제를 사용하는 경우 설정해야합니다max_wal_senders동시에 연결할 수 있도록 1 차에서 충분히 높습니다.

26.2.5. 스트리밍 복제#

스트리밍 복제를 사용하면 토토 서버가 파일 기반 로그 배송에서 가능한 것보다 최신 상태를 유지할 수 있습니다. 대기는 WAL 파일이 채워지기를 기다리지 않고 생성 된 상태에서 WAL 레코드를 대기로 스트리밍하는 기본에 연결됩니다.

스트리밍 복제는 기본적으로 비동기식입니다 (참조섹션 26.2.8),이 경우 1 차 트랜잭션을 저지르는 것과 대기에서 변경 사항이 보이는 사이에 약간의 지연이 있습니다. 그러나이 지연은 파일 기반 로그 배송보다 훨씬 작습니다. 일반적으로 대기가 부하를 따라 잡을 수있을 정도로 강력하다고 가정하면 1 초 미만입니다.archive_timeout데이터 손실 창을 줄일 필요는 없습니다.

파일 기반 연속 아카이브없이 스트리밍 복제를 사용하는 경우 서버는 대기 WAL 세그먼트를 재활용 할 수 있습니다. 이 경우 대기는 새로운베이스 백업에서 재 구선해야합니다.Wal_Keep_SizeWAL 세그먼트가 너무 일찍 재활용되지 않거나 대기에 대한 복제 슬롯을 구성하여 충분히 큰 값으로. 대기에서 액세스 할 수있는 WAL 아카이브를 설정 한 경우 대기는 충분한 세그먼트를 유지하는 경우 항상 아카이브를 사용하여 잡을 수 있으므로 이러한 솔루션이 필요하지 않습니다..

스트리밍 복제를 사용하려면에 설명 된대로 파일 기반 로그쉽 토토 서버를 설정하십시오.PostgreSQL : 문서 : 17 : 26.2. 로그쉽 토토 서버. 파일 기반 로그쉽 대기를 스트리밍 복제 대기로 바꾸는 단계는를 설정하는 것입니다.Primary_conninfo기본 서버를 가리 키도록 설정합니다. 세트Listen_Addresses및 인증 옵션 (참조on) 기본에서 토토 서버가에 연결할 수 있도록복제기본 서버의 Pseudo-Database (참조섹션 26.2.5.1).

Keepalive 소켓 옵션을 지원하는 시스템에서 설정TCP_KEEPALIVES_IDLE, tcp_keepalives_intervalandTCP_KEEPALIVES_COUNT기본이 깨진 연결을 즉시 알 수 있도록 도와줍니다.

토토 서버에서 최대 동시 연결 수 설정 (참조max_wal_senders자세한 내용).

토토가 시작될 때Primary_conninfo가 올바르게 설정되면 토토는 아카이브에서 사용 가능한 모든 책치 파일을 재생 한 후 기본에 연결됩니다. 연결이 성공적으로 설정되면 A가 표시됩니다.Walreceiver토토 중 및 해당Walsender1 차 프로세스

26.2.5.1. 입증#

신뢰할 수있는 사용자만이 WAL 스트림을 읽을 수 있도록 복제에 대한 액세스 권한을 설정하는 것이 매우 중요합니다. 토토 서버는가있는 계정으로 기본에 인증해야합니다.복제특권 또는 슈퍼업자. 로 전용 사용자 계정을 작성하는 것이 좋습니다.복제and로그인복제 권한. 하는 동안복제Privilege는 매우 높은 권한을 부여하므로 사용자가 기본 시스템의 데이터를 수정할 수 없습니다.SuperUser특권이.

복제를위한 클라이언트 인증은 A에 의해 제어됩니다.on기록 지정복제in데이터베이스필드. 예를 들어, 토토가 호스트 IP에서 실행중인 경우192.168.1.100복제의 계정 이름은입니다.foo, 관리자는 다음 줄을에 추가 할 수 있습니다.on기본의 파일 :

# 호스트 192.168.1.100에서 사용자 "foo"허용 기본에 연결하십시오.

기본의 호스트 이름 및 포트 번호, 연결 사용자 이름 및 비밀번호는에 지정되어 있습니다.Primary_conninfo. 암호는에서도 설정할 수 있습니다.~/.pgpass토토의 파일 (specify복제in데이터베이스필드). 예를 들어, 기본이 호스트 IP에서 실행중인 경우192.168.1.50, 포트5432, 복제의 계정 이름은foo, 암호는입니다.foopass, 관리자는 다음 줄을에 추가 할 수 있습니다.on토토 파일 :

# 대기는 192.168.1.50 호스트에서 실행중인 기본에 연결됩니다.

26.2.5.2. 모니터링#

스트리밍 복제의 중요한 건강 지표는 기본에서 생성 된 WAL 레코드의 양입니다. 기본의 현재 WAL 쓰기 위치를 대기로 수신 한 마지막 WAL 위치와 비교 하여이 지연을 계산할 수 있습니다.PG_CURRENT_WAL_LSN1 차 및PG_LAST_WAL_RECEIVE_LSN토토에서 각각 (참조표 9.95and표 9.96자세한 내용). 대기의 마지막 WAL 수신 위치는 WAL 수신기 프로세스의 프로세스 상태에도 표시되며PS명령 (참조​​섹션 27.1자세한 내용).

당신은를 통해 WAL 발신자 프로세스 목록을 검색 할 수 있습니다pg_stat_replication보기. 사이의 큰 차이점PG_CURRENT_WAL_LSN및 The View 'ssend_lsn필드는 기본 서버가 무거운 부하에 처해 있음을 나타냅니다.send_lsnandPG_LAST_WAL_RECEIVE_LSN토토에서 네트워크 지연이 표시되거나 토토가 무거운 부하를 받고 있음을 나타낼 수 있습니다.

핫 스탠드에서 WAL 수신기 프로세스의 상태는를 통해 검색 할 수 있습니다.PG_STAT_WAL_RECEIVER보기. 사이의 큰 차이PG_LAST_WAL_REPLAY_LSN및 The View 'sFlushed_LSNWAL이 재생 될 수있는 것보다 더 빨리 받고 있음을 나타냅니다.

26.2.6. 복제 슬롯#

복제 슬롯은 기본 서버가 모든 대기에 의해 수신 될 때까지 WAL 세그먼트를 제거하지 않도록하고 기본이 a를 제거 할 수있는 행을 제거하지 않도록 자동화 된 방법을 제공합니다.복구 충돌토토가 단절된 경우에도

복제 슬롯 사용 대신 사용을 사용하여 오래된 WAL 세그먼트의 제거를 방지 할 수 있습니다Wal_Keep_Size, 또는 아카이브에 세그먼트를 보관하여archive_command또는archive_library. 이러한 방법의 단점은 종종 필요한 것보다 더 많은 WAL 세그먼트를 유지하는 반면, 복제 슬롯은 필요한 것으로 알려진 세그먼트의 수만 유지한다는 것입니다..

마찬가지로,hot_standby_feedback자체적으로는 복제 슬롯을 사용하지 않고 진공으로 제거되는 관련 행에 대한 보호 기능을 제공하지만 대기가 연결되지 않은 경우 어느 시간 동안 보호도 제공하지 않습니다..

주의

복제 슬롯이 서버가 너무 많은 WAL 세그먼트를 유지하여에 할당 된 공간을 채울 수 있음을주의하십시오.PG_WAL. max_slot_wal_keep_size복제 슬롯으로 유지되는 책치 파일의 크기를 제한하는 데 사용할 수 있습니다.

26.2.6.1. 복제 슬롯 쿼리 및 조작#

각 복제 슬롯은 이름이 있으며, 여기에는 소문자 문자, 숫자 및 밑줄 문자가 포함될 수 있습니다.

기존 복제 슬롯과 해당 상태에서pg_replication_slots보기

스트리밍 복제 프로토콜을 통해 슬롯을 생성하고 삭제할 수 있습니다 (참조PostgreSQL : 문서 : 17 : 53.4. 사설 토토 복제 프로토콜) 또는 SQL 함수를 통해 (참조섹션 9.28.6).

26.2.6.2. 구성 예#

다음과 같은 복제 슬롯을 만들 수 있습니다.

postgres =# select * from pg_create_physical_replication_slot ( 'node_a_slot');

이 슬롯을 사용하도록 토토를 구성하려면Primary_Slot_name대기에서 구성해야합니다. 간단한 예는 다음과 같습니다.

Primary_conninfo = 'host = 192.168.1.50 포트 = 5432 사용자 = foo password = foopass'

26.2.7. 계단식 복제#

계단식 복제 기능을 사용하면 토토 서버가 복제 연결을 수락하고 WAL 레코드를 다른 대기에 스트리밍하여 릴레이 역할을합니다. 이것은 1 차에 직접 연결의 수를 줄이고 사이트 간 대역폭 오버 헤드를 최소화하는 데 사용될 수 있습니다.

수신기와 발신자 역할을하는 대기는 계단식 대기라고합니다. 기본에보다 직접적으로 연결된 대기는 업스트림 서버로 알려져 있으며, 해당 토토 서버는 다운 스트림 서버입니다.

계단식 대기는 1 차에서받은 WAL 레코드뿐만 아니라 아카이브에서 복원 된 기록을 보냅니다. 따라서 일부 업스트림 연결의 복제 연결이 종료 되더라도 새로운 WAL 레코드를 사용할 수있는 한 스트리밍 복제가 계속 진행됩니다.

계단식 복제는 현재 비동기입니다. 동기 복제 (참조섹션 26.2.8) 설정은 현재 계단식 복제에 영향을 미치지 않습니다.

핫 토토 피드백은 계단식 배열에 관계없이 상류에 전파됩니다.

업스트림 토토 서버가 새로운 기본이되기 위해 홍보되면 다운 스트림 서버는 새로운 기본 if에서 계속 스트리밍됩니다.복구 _target_timeline로 설정되었습니다'최신'(기본값).

계단식 복제를 사용하려면 복제 연결을 수락 할 수 있도록 계단식 대기를 설정하십시오 (즉, setmax_wal_sendersandhot_standby및 구성젠 토토 PostgreSQL : 문서 : 17 : 20.1. pg_hba.conf 파일). 당신은 또한 설정해야합니다Primary_conninfo계단식 토토를 가리키기 위해 다운 스트림 토토에서.

26.2.8. 동기 복제#

postgresql스트리밍 복제는 기본적으로 비동기식입니다. 기본 서버가 충돌하면 커밋 된 일부 트랜잭션이 토토 서버로 복제되지 않았으므로 데이터 손실이 발생할 수 있습니다.

동기 복제는 트랜잭션으로 이루어진 모든 변경 사항이 하나 이상의 동기 토토 서버로 전송되었음을 확인하는 기능을 제공합니다. 이는 거래 커밋에서 제공하는 표준 수준의 내구성을 확장합니다.synchronous_commit로 설정되었습니다Remote_write.

동기 복제를 요청할 때, 쓰기 트랜잭션의 각 커밋은 기본 및 토토 서버의 쓰기 로그인 디스크에 커밋이 기록되었음을 확인할 때까지 대기합니다. 데이터가 손실 될 수있는 유일한 가능성은 기본 및 대기가 동시에 충돌을 겪는 경우입니다.

읽기 전용 트랜잭션 및 트랜잭션 롤백은 토토 서버에서 답장을 기다릴 필요가 없습니다. Subrantaction Comm은 토토 서버의 응답을 기다리지 않고 최상위 커밋 만 대기합니다.

동기 대기는 에프 복제 대기 또는 논리적 복제 가입자 일 수 있습니다. 또한 적절한 피드백 메시지를 보내는 방법을 알고있는 다른 에프 또는 논리적 WAL 복제 스트림 소비자 일 수도 있습니다.PG_RECEIVEWALandpg_recvlogical뿐만 아니라 일부 타사 복제 시스템 및 사용자 정의 프로그램. 동기 복제 지원에 대한 자세한 내용은 해당 문서를 확인하십시오.

26.2.8.1. 기본 구성#

스트리밍 복제가 구성되면 동기식을 구성하려면 하나의 추가 구성 단계 만 필요합니다.synchronous_standby_names비어 있지 않은 값으로 설정해야합니다.synchronous_commiton이지만 기본값이므로 일반적으로 변경 사항이 필요하지 않습니다. (보다섹션 19.5.1and섹션 19.6.2.)이 구성은 각각 토토가 내구성있는 저장소에 커밋 레코드를 작성했다는 확인을 기다릴 것입니다..synchronous_commit개별 사용자가 설정할 수 있으므로 전송 당 내구성 보증을 제어하기 위해 구성 파일, 특정 사용자 또는 데이터베이스에 대해 또는 응용 프로그램에 따라 동적으로 구성 할 수 있습니다.

커밋 레코드가 기본의 디스크에 기록 된 후 WAL 레코드가 토토로 전송됩니다. 토토는 새로운 월 데이터 배치가 디스크에 기록 될 때마다 회신 메시지를 보냅니다.Wal_receiver_status_interval토토에서 0으로 설정되어 있습니다. 그 경우synchronous_commit로 설정되었습니다Remote_Apply, 토토는 커밋 레코드가 재생 될 때 회신 메시지를 보냅니다. 토토가 동기 토토로 선택된 경우의 설정에 따라synchronous_standby_names기본에서 해당 대기의 응답 메시지는 다른 동기 대기의 응답 메시지와 함께 고려하여 커밋 레코드가 수신되었음을 확인하기 위해 대기하는 트랜잭션을 릴리스 할시기를 결정합니다. 이 매개 변수를 사용하면 관리자가 어떤 토토 서버가 동기식 대기 여야하는지 지정할 수 있습니다.

설정synchronous_committoRemote_write대기가 커밋 레코드를 수신하고 자체 운영 체제에 작성했음을 확인하기 위해 각 커밋을 기다릴 것입니다. 이 설정은보다 내구성에 대한 약한 보증을 제공합니다.onDOS : 토토는 운영 체제 충돌시 데이터를 잃을 수 있지만postgresql충돌. 그러나 거래의 응답 시간을 줄일 수 있기 때문에 실제로 유용한 설정입니다.

설정synchronous_committoRemote_Apply현재 동기 대기가 트랜잭션을 재생했다고보고 할 때까지 각 커밋을 기다릴 것입니다. 간단한 경우, 이것은 인과 적 일관성으로로드 밸런싱을 허용합니다.

빠른 종료가 요청되면 사용자는 대기를 중단합니다. 그러나 비동기 복제를 사용할 때와 같이 모든 미결제 WAL 레코드가 현재 연결된 토토 서버로 전송 될 때까지 서버는 완전히 종료되지 않습니다.

26.2.8.2. 다중 동기 대기#

동기 복제는 하나 이상의 동기 토토 서버를 지원합니다. 트랜잭션은 데이터의 동기식 확인으로 간주되는 모든 토토 서버가 기다릴 때까지 기다립니다.synchronous_standby_names. 이 매개 변수는 토토 이름 목록과 메소드 (도 지정합니다.첫 번째andAny) 나열된 토토에서 동기식 토토를 선택하려면

방법첫 번째우선 순위 기반 동기 복제를 지정하고 트랜잭션 커미션이 우선 순위에 따라 선택된 요청 된 동기식 대기 수로 복제 될 때까지 트랜잭션 커밋을 대기합니다. 목록의 앞부분에서 이름이 표시되는 대기는 우선 순위가 높으며 동기식으로 간주됩니다.

의 예synchronous_standby_names우선 순위 기반 다중 동기 대기는 다음과 같습니다.

synchronous_standby_names = '처음 2 (S1, S2, S3)'

이 예에서는 4 개의 토토 서버 인 경우s1, s2, s3ands4실행 중입니다. 두 토토s1ands2이름은 토토 이름 목록에서 초기에 나타나기 때문에 동기 토토로 선택됩니다.s3|s1또는s2실패.s4이름이 목록에 없기 때문에 비동기 토토입니다.

방법Any쿼럼 기반 동기 복제를 지정하고 트랜잭션 커밋이 WAL 레코드가 복제 될 때까지 기다리게합니다적어도목록에 요청 된 동기식 토토 수.

의 예synchronous_standby_names쿼럼 기반 다중 동기 대기는 다음과 같습니다.

Synchronous_standby_names = 'Any 2 (S1, S2, S3)'

이 예에서는 4 개의 토토 서버 인 경우s1, s2, s3ands4실행 중입니다. 트랜잭션 커밋은 최소한 두 토토의 답변을 기다릴 것입니다s1, s2ands3. s4이름이 목록에 없기 때문에 비동기 토토입니다.

토토 서버의 동기 상태는를 사용하여 볼 수 있습니다pg_stat_replication보기

26.2.8.3. 성능 계획#

동기 복제는 일반적으로 애플리케이션을 수용 할 수 있도록 신중하게 계획되고 배치 된 토토 서버가 필요합니다. 대기는 시스템 리소스를 사용하지 않지만 전송이 확인 될 때까지 트랜잭션 잠금 장치가 계속 유지됩니다.

postgresql응용 프로그램 개발자가 복제를 통해 필요한 내구성 수준을 지정할 수 있습니다. 특정 사용자 또는 연결 또는 개별 트랜잭션에 대해서도 지정할 수도 있지만 시스템 전체에 지정할 수 있습니다.

예를 들어, 응용 프로그램 워크로드는 다음으로 구성 될 수 있습니다. 변경의 10%는 중요한 고객 세부 사항이며, 90%의 변경 사항은 사용자 간의 채팅 메시지와 같이 비즈니스가 손실되면 비즈니스가 더 쉽게 생존 할 수있는 중요한 데이터입니다..

응용 프로그램 수준 (1 차)에 지정된 동기식 복제 옵션을 사용하여 총 작업량의 대부분을 늦추지 않고 가장 중요한 변경 사항에 대해 동기식 복제를 제공 할 수 있습니다. 응용 프로그램 수준 옵션은 고성능 응용 프로그램에 대한 동기 복제의 이점을 허용하는 중요하고 실용적인 도구입니다.

네트워크 대역폭이 WAL 데이터 생성 속도보다 높아야한다고 생각해야합니다.

26.2.8.4. 고 가용성 계획#

synchronous_standby_names트랜잭션이 저지르는 동기 토토의 수와 이름을 지정합니다.synchronous_commit로 설정되었습니다on, Remote_Apply또는Remote_write응답을 기다릴 것입니다. 동기식 토토 중 하나가 충돌 해야하는 경우 이러한 트랜잭션 커밋은 결코 완료되지 않을 수 있습니다.

고 가용성을위한 최상의 솔루션은 요청 된대로 많은 동기식 대기를 유지하는 것입니다. 이것은 여러 잠재적 동기식 대기를 사용하여를 달성 할 수 있습니다.synchronous_standby_names.

우선 순위 기반 동기 복제에서 목록의 앞부분에서 표시되는 대기는 동기식 대기로 사용됩니다. 이후에 나열된 대기는 현재 중 하나가 실패하면 동기 대기의 역할을 인수합니다.

쿼럼 기반 동기 복제에서 목록에 나타나는 모든 대기는 동기식 대기의 후보로 사용됩니다. 그들 중 하나가 실패하더라도 다른 대기는 동기 대기 후보의 역할을 계속 수행 할 것입니다.

토토가 처음으로 기본에 부착되면 아직 제대로 동기화되지 않습니다. 이것은로 묘사됩니다.캐치 업모드. 토토와 1 차 사이의 지연이 처음으로 0에 도달하면 실시간으로 이동스트리밍상태. 캐치 업 기간은 대기가 생성 된 직후에 길어질 수 있습니다.스트리밍상태. 이 상태는를 사용하여 볼 수 있습니다.pg_stat_replication보기

Commits가 승인을 기다리는 동안 1 차 재시작이 시작되면 기본 데이터베이스가 복구되면 대기 트랜잭션이 완전히 커밋됩니다. 모든 대기는 1 차 충돌 시점에 모든 미결제 월 데이터를 받았다고 확신 할 수있는 방법이 없습니다.

요청 된만큼 동기식 토토를 많이 유지할 수 없다면 트랜잭션이 저지르는 동기식 토토 수를 줄여야합니다.synchronous_standby_names(또는 비활성화) 및 기본 서버에서 구성 파일을 다시로드합니다.

기본이 나머지 토토 서버에서 격리 된 경우 다른 토토 서버의 최상의 후보로 실패해야합니다.

트랜잭션이 기다리는 동안 토토 서버를 다시 만들어야하는 경우 함수가 있는지 확인하십시오pg_backup_start ()andpg_backup_stop ()synchronous_commit = off, 그렇지 않으면 그 요청은 토토가 나타날 때까지 영원히 기다립니다.

26.2.9. 토토에서의 연속 아카이브#

토토에서 연속 WAL 아카이브를 사용하는 경우 두 가지 다른 시나리오가 있습니다. WAL 아카이브는 기본과 토토 ​​사이에 공유 할 수 있거나 토토에는 자체 WAL 아카이브가있을 수 있습니다. 토토에 자체 WAL 아카이브가 있으면 SETarchive_modeto항상, 그리고 대기는 아카이브에서 복원하거나 스트리밍 복제를 통해 수신하는 모든 WAL 세그먼트의 아카이브 명령을 호출합니다. 공유 아카이브는 비슷하게 처리 할 수 ​​있지만archive_command또는archive_library아카이브 된 파일이 이미 존재하는지, 기존 파일에 동일한 내용이 있는지 테스트해야합니다. 이것은에 더 많은주의를 기울여야합니다.archive_command또는archive_library, 다른 내용이 다른 기존 파일을 덮어 쓰지 않도록주의해야하지만 정확히 동일한 파일이 두 번 보관되면 성공을 반환해야합니다. 두 서버가 동시에 동일한 파일을 보관하려고 시도하면 레이스 조건에서 무료로 수행해야합니다.

ifarchive_mode로 설정되었습니다on, 회복 또는 대기 모드 중에 아카이버가 활성화되지 않습니다. 토토 서버가 프로모션되면 프로모션 후 아카이브가 시작되지만 자체적으로 생성되지 않은 WAL 또는 타임 라인 기록 파일을 보관하지 않습니다.onand항상모드.

정정 제출

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