| 윈 토토 : 문서 : 9.4 : 윈 토토 | |||
|---|---|---|---|
| 윈 토토 PostgreSQL : 문서 : 9.4 : 다른 솔루션 비교 | PostgreSQL : 문서 : 9.4 : 고 가용성,윈 토토 밸런싱 및 복제 | 25장. 고가용성, 로드 밸런싱 및 복제 | 토토 사이트 추천 : 문서 : 9.4 : Failover | 
지속적인 보관을 사용하여 다음을 생성할 수 있습니다.고가용성(HA) 하나 이상의 클러스터 구성토토 사이트 서버주 서버가 실패할 경우 작업을 인계받을 준비가 되어 있습니다. 이 기능은 다음과 같이 널리 알려져 있습니다.따뜻한 토토 사이트또는로그 전달.
기본 및 토토 사이트 서버는 함께 작동하여 이 기능을 제공하지만 서버는 느슨하게 연결되어 있습니다. 기본 서버는 연속 보관 모드로 작동하는 반면, 각 토토 사이트 서버는 연속 복구 모드로 작동하여 기본 서버에서 WAL 파일을 읽습니다. 이 기능을 활성화하기 위해 데이터베이스 테이블을 변경할 필요가 없으므로 다른 복제 솔루션에 비해 관리 오버헤드가 낮습니다. 또한 이 구성은 기본 서버의 성능에 상대적으로 낮은 영향을 미칩니다.
WAL 레코드를 한 데이터베이스 서버에서 다른 데이터베이스 서버로 직접 이동하는 것은 일반적으로 로그 전달로 설명됩니다.포스트그레SQLWAL 레코드를 한 번에 하나의 파일(WAL 세그먼트)로 전송하여 파일 기반 로그 전달을 구현합니다. WAL 파일(16MB)은 인접한 시스템, 동일한 사이트의 다른 시스템, 지구 반대편에 있는 다른 시스템 등 어떤 거리로든 쉽고 저렴하게 배송될 수 있습니다. 이 기술에 필요한 대역폭은 기본 서버의 트랜잭션 속도에 따라 다릅니다. 레코드 기반 로그 전달은 더욱 세분화되었으며 네트워크 연결을 통해 WAL 변경 사항을 점진적으로 스트리밍합니다(참조섹션 25.2.5).
로그 전달은 비동기식이라는 점에 유의해야 합니다. 즉, WAL 레코드는 트랜잭션 커밋 후에 전달됩니다. 결과적으로 기본 서버에 치명적인 오류가 발생하면 데이터가 손실될 수 있는 기회가 있습니다. 아직 배송되지 않은 거래는 손실됩니다. 파일 기반 로그 전달에서 데이터 손실 기간의 크기는 다음을 사용하여 제한될 수 있습니다.archive_timeout매개변수는 몇 초 정도로 낮게 설정할 수 있습니다. 그러나 이렇게 낮게 설정하면 파일 전달에 필요한 대역폭이 크게 늘어납니다. 스트리밍 복제(참조섹션 25.2.5)을 사용하면 데이터 손실 범위가 훨씬 작아집니다.
복구 성능은 충분히 우수하여 대기 모드가 활성화되면 일반적으로 단 몇 분만에 전체 가용성을 얻을 수 있습니다. 따라서 이를 고가용성을 제공하는 웜 대기 구성이라고 합니다. 보관된 기본 백업에서 서버를 복원하고 롤포워드하는 데는 상당히 오랜 시간이 걸리므로 이 기술은 고가용성이 아닌 재해 복구용 솔루션만 제공합니다. 토토 사이트 서버는 읽기 전용 쿼리에도 사용될 수 있으며, 이 경우 이를 핫 토토 사이트 서버라고 합니다. 참조와이즈 토토 PostgreSQL : 문서 : 9.4 : 핫 스탠드더 많은 정보를 원하시면.
적어도 데이터베이스 서버의 관점에서는 기본 및 토토 사이트 서버를 최대한 유사하게 만드는 것이 일반적으로 현명합니다. 특히, 테이블스페이스와 연관된 경로 이름은 수정되지 않은 상태로 전달되므로 해당 기능을 사용하는 경우 기본 서버와 토토 사이트 서버 모두 테이블스페이스에 대해 동일한 마운트 경로를 가져야 합니다. 다음과 같은 경우에 유의하세요.PostgreSQL : 문서 : 9.4 : 스포츠 토토 베트맨 스페이스 생성은 기본 서버에서 실행되며 이에 필요한 새 마운트 지점은 명령이 실행되기 전에 기본 서버와 모든 토토 사이트 서버에 생성되어야 합니다. 하드웨어가 완전히 동일할 필요는 없지만, 경험에 따르면 두 개의 동일한 시스템을 유지하는 것이 애플리케이션과 시스템의 수명 동안 서로 다른 두 시스템을 유지하는 것보다 쉽습니다. 어떤 경우에도 하드웨어 아키텍처는 동일해야 합니다. 예를 들어 32비트 시스템에서 64비트 시스템으로의 출시는 작동하지 않습니다.
일반적으로 서로 다른 메이저를 실행하는 서버 간의 로그 전달포스트그레SQL릴리스 레벨은 불가능합니다. 마이너 릴리스 업그레이드 중에 디스크 형식을 변경하지 않는 것이 PostgreSQL 글로벌 개발 그룹의 정책이므로 기본 서버와 토토 사이트 서버에서 서로 다른 마이너 릴리스 수준을 실행하면 성공적으로 작동할 가능성이 높습니다. 그러나 이에 대한 공식적인 지원은 제공되지 않으며 기본 및 토토 사이트 서버를 가능한 한 동일한 릴리스 수준으로 유지하는 것이 좋습니다. 새로운 마이너 릴리스로 업데이트할 때 가장 안전한 정책은 토토 사이트 서버를 먼저 업데이트하는 것입니다. 새로운 마이너 릴리스는 그 반대의 경우보다 이전 마이너 릴리스의 WAL 파일을 읽을 가능성이 더 높습니다.
대기 모드에서 서버는 마스터 서버로부터 받은 WAL을 지속적으로 적용합니다. 토토 사이트 서버는 WAL 아카이브에서 WAL을 읽을 수 있습니다(참조restore_command) 또는 TCP 연결을 통해 마스터에서 직접(스트리밍 복제). 또한 토토 사이트 서버는 대기 클러스터의 WAL에서 발견된 WAL을 복원하려고 시도합니다.pg_xlog디렉토리. 이는 일반적으로 서버를 다시 시작한 후 토토 사이트 서버가 다시 시작하기 전에 마스터에서 스트리밍된 WAL을 다시 재생할 때 발생하지만 수동으로 파일을 복사할 수도 있습니다.pg_xlog언제든지 재생할 수 있습니다.
시작 시 토토 사이트는 아카이브 위치에서 사용 가능한 모든 WAL을 복원하여 시작됩니다.restore_command. WAL의 끝에 도달하면 그곳에서 사용할 수 있습니다.restore_command실패하면 다음에서 사용 가능한 WAL을 복원하려고 시도합니다.pg_xlog디렉토리. 실패하고 스트리밍 복제가 구성된 경우 토토 사이트 서버는 기본 서버에 연결을 시도하고 아카이브에서 발견된 마지막 유효한 레코드에서 스트리밍 WAL을 시작합니다.pg_xlog. 실패하거나 스트리밍 복제가 구성되지 않거나 나중에 연결이 끊어지면 토토 사이트는 1단계로 돌아가서 아카이브에서 파일을 다시 복원하려고 시도합니다. 아카이브에서 재시도하는 이 루프는,pg_xlog, 서버가 중지되거나 트리거 파일에 의해 장애 조치가 트리거될 때까지 스트리밍 복제를 통해 계속됩니다.
다음 경우에 대기 모드가 종료되고 서버가 정상 작동으로 전환됩니다.pg_ctl 승격실행되거나 트리거 파일이 발견되었습니다(trigger_file). 장애 조치 전에 아카이브 또는에서 즉시 사용할 수 있는 모든 WALpg_xlog복원되지만 마스터에 연결하려는 시도는 이루어지지 않습니다.
다음에 설명된 대로 기본에서 대기에서 액세스할 수 있는 아카이브 디렉토리에 대한 연속 아카이브를 설정합니다.토토 꽁 머니 PostgreSQL : 문서 : 9.4 : 연속 보관 및 시점 복구 (PITR). 아카이브 위치는 마스터가 다운된 경우에도 대기에서 액세스할 수 있어야 합니다. 즉, 마스터 서버가 아닌 토토 사이트 서버 자체 또는 다른 신뢰할 수 있는 서버에 있어야 합니다.
스트리밍 복제를 사용하려면 기본 서버에 인증을 설정하여 토토 사이트 서버로부터의 복제 연결을 허용하십시오. 즉, 역할을 생성하고 적절한 항목을 제공합니다.pg_hba.conf데이터베이스 필드가 다음으로 설정됨복제. 또한 보장하세요max_wal_senders은 기본 서버의 구성 파일에서 충분히 큰 값으로 설정되어 있습니다. 복제 슬롯을 사용할 경우 다음 사항을 확인하세요.max_replication_slots또한 충분히 높게 설정되어 있습니다.
설명된 대로 기본 백업을 수행섹션 24.3.2토토 사이트 서버를 부트스트랩합니다.
토토 사이트 서버를 설정하려면 기본 서버에서 가져온 기본 백업을 복원하십시오(참조섹션 24.3.4). 복구 명령 파일 생성recovery.conf토토 사이트의 클러스터 데이터 디렉터리에 있고 켜기토토 사이트_모드. 설정restore_commandWAL 아카이브에서 파일을 복사하는 간단한 명령입니다. 고가용성을 위해 여러 개의 토토 사이트 서버를 보유할 계획이라면 다음을 설정하세요.recovery_target_timeline에최신, 토토 사이트 서버가 다른 토토 사이트 서버로의 장애 조치 시 발생하는 타임라인 변경을 따르도록 합니다.
참고:여기에 설명된 대기 모드가 내장된 pg_standby 또는 유사한 도구를 사용하지 마십시오.restore_command파일이 존재하지 않으면 즉시 반환해야 합니다. 필요한 경우 서버는 명령을 다시 시도합니다. 참조PostgreSQL : 문서 : 9.4 : 로그 배송을위한 대체 토토 사이트 순위pg_standby와 같은 도구를 사용하기 위한 것입니다.
스트리밍 복제를 사용하려면 다음을 입력하세요.primary_conninfo호스트 이름(또는 IP 주소) 및 기본 서버에 연결하는 데 필요한 추가 세부 정보를 포함하는 libpq 연결 문자열이 포함되어 있습니다. 기본 인증을 위해 비밀번호가 필요한 경우, 비밀번호는에서 지정되어야 합니다.primary_conninfo또한.
고가용성을 위해 토토 사이트 서버를 설정하는 경우 토토 사이트 서버는 장애 조치 후 기본 서버로 작동하므로 기본 서버처럼 WAL 보관, 연결 및 인증을 설정하십시오.
WAL 아카이브를 사용하는 경우 다음을 사용하여 크기를 최소화할 수 있습니다.archive_cleanup_command토토 사이트 서버에 더 이상 필요하지 않은 파일을 제거하는 매개변수입니다. 그만큼pg_archivecleanup유틸리티는 다음과 함께 사용하도록 특별히 설계되었습니다.archive_cleanup_command일반적인 단일 토토 사이트 구성에서는 참조PostgreSQL : 문서 :. 그러나 백업 목적으로 아카이브를 사용하는 경우 대기에서 더 이상 필요하지 않더라도 최소한 최신 기본 백업에서 복구하는 데 필요한 파일을 보관해야 합니다.
a의 간단한 예recovery.conf다음과 같습니다:
standby_mode = '켜짐' Primary_conninfo = '호스트=192.168.1.50 포트=5432 사용자=foo 비밀번호=foopass' Restore_command = 'cp /path/to/archive/%f %p' archive_cleanup_command = 'pg_archivecleanup /path/to/archive %r'
토토 사이트 서버는 원하는 수만큼 가질 수 있지만 스트리밍 복제를 사용하는 경우 설정해야 합니다.max_wal_senders기본에서 동시에 연결될 수 있을 만큼 충분히 높습니다.
스트리밍 복제를 통해 토토 사이트 서버는 파일 기반 로그 전달보다 더 최신 상태를 유지할 수 있습니다. 대기는 WAL 파일이 채워질 때까지 기다리지 않고 WAL 레코드가 생성되는 대로 대기로 스트리밍하는 기본에 연결됩니다.
스트리밍 복제는 기본적으로 비동기식입니다(참조섹션 25.2.8), 이 경우 기본에서 트랜잭션을 커밋하고 대기에서 변경 사항이 표시되는 사이에 약간의 지연이 있습니다. 그러나 이 지연은 파일 기반 로그 전달보다 훨씬 작습니다. 일반적으로 토토 사이트 서버가 로드를 따라갈 수 있을 만큼 강력하다고 가정하면 1초 미만입니다. 스트리밍 복제를 사용하면,archive_timeout데이터 손실 창을 줄이는 데 필요하지 않습니다.
파일 기반 연속 아카이브 없이 스트리밍 복제를 사용하는 경우 서버는 토토 사이트 서버가 이를 수신하기 전에 오래된 WAL 세그먼트를 재활용할 수 있습니다. 이런 일이 발생하면 대기는 새로운 기본 백업에서 다시 초기화되어야 합니다. 설정하여 이를 방지할 수 있습니다.wal_keep_segmentsWAL 세그먼트가 너무 일찍 재활용되지 않도록 충분히 큰 값으로 설정하거나 대기용 복제 슬롯을 구성합니다. 대기에서 액세스할 수 있는 WAL 아카이브를 설정하는 경우 이러한 솔루션은 필요하지 않습니다. 왜냐하면 대기는 충분한 세그먼트를 유지하는 경우 항상 아카이브를 사용하여 따라잡을 수 있기 때문입니다.
스트리밍 복제를 사용하려면 다음에 설명된 대로 파일 기반 로그 전달 토토 사이트 서버를 설정하십시오.PostgreSQL : 문서화 : 9.4 : 로그 선집 토토 사이트 서버. 파일 기반 로그 전달 대기를 스트리밍 복제 대기로 전환하는 단계가 설정됩니다.primary_conninfo설정recovery.conf파일이 기본 서버를 가리킵니다. 설정listen_addresses및 인증 옵션(참조pg_hba.conf) 토토 사이트 서버가복제주 서버의 의사 데이터베이스(참조섹션 25.2.5.1).
킵얼라이브 소켓 옵션을 지원하는 시스템에서 설정tcp_keepalives_idle, tcp_keepalives_interval그리고tcp_keepalives_count기본 장치가 끊어진 연결을 즉시 발견하도록 돕습니다.
토토 사이트 서버의 최대 동시 연결 수를 설정합니다(참조max_wal_senders자세한 내용은).
토토 사이트 시작 시primary_conninfo이 올바르게 설정되면 대기는 아카이브에서 사용 가능한 모든 WAL 파일을 재생한 후 기본에 연결됩니다. 연결이 성공적으로 설정되면 대기에 walreceiver 프로세스가 표시되고 기본에 해당 walsender 프로세스가 표시됩니다.
복제에 대한 액세스 권한을 설정하여 신뢰할 수 있는 사용자만 WAL 스트림을 읽을 수 있도록 하는 것이 매우 중요합니다. WAL 스트림에서 권한 있는 정보를 쉽게 추출할 수 있기 때문입니다. 토토 사이트 서버는 기본 서버에 수퍼유저 또는 다음 권한이 있는 계정으로 인증해야 합니다.복제특권. 다음을 사용하여 전용 사용자 계정을 생성하는 것이 좋습니다.복제그리고로그인복제 권한. 동안복제권한은 매우 높은 권한을 부여하지만 사용자가 기본 시스템의 데이터를 수정하는 것을 허용하지 않습니다.슈퍼유저권한이 있습니다.
복제를 위한 클라이언트 인증은 다음에 의해 제어됩니다.pg_hba.conf레코드 지정복제에서데이터베이스필드. 예를 들어 대기가 호스트 IP에서 실행 중인 경우192.168.1.100복제용 계정 이름은foo, 관리자는 다음 줄을에 추가할 수 있습니다.pg_hba.conf기본 파일:
# 호스트 192.168.1.100의 사용자 "foo"가 기본 호스트에 연결하도록 허용 # 사용자의 비밀번호가 올바르게 제공되면 복제 대기로 사용됩니다. # # 유형 데이터베이스 사용자 주소 방법 호스트 복제 foo 192.168.1.100/32 md5
기본 호스트 이름과 포트 번호, 연결 사용자 이름 및 비밀번호는 다음 항목에 지정됩니다.recovery.conf파일. 비밀번호는에서도 설정할 수 있습니다.~/.pgpass토토 사이트 중인 파일(지정복제에서데이터베이스필드). 예를 들어 기본 호스트가 호스트 IP에서 실행 중인 경우192.168.1.50, 포트5432, 복제할 계정 이름은foo, 비밀번호는foopass, 관리자는 다음 줄을에 추가할 수 있습니다.recovery.conf토토 사이트 중인 파일:
# 대기는 호스트 192.168.1.50에서 실행 중인 기본에 연결됩니다. # 및 포트 5432는 비밀번호가 "foopass"인 사용자 "foo"입니다. Primary_conninfo = '호스트=192.168.1.50 포트=5432 사용자=foo 비밀번호=foopass'
스트리밍 복제의 중요한 상태 지표는 기본에서는 생성되었지만 대기에서는 아직 적용되지 않은 WAL 레코드의 양입니다. 기본 데이터베이스의 현재 WAL 쓰기 위치와 대기 데이터베이스에서 수신한 마지막 WAL 위치를 비교하여 이 지연을 계산할 수 있습니다. 다음을 사용하여 검색할 수 있습니다.pg_current_xlog_location기본 및pg_last_xlog_receive_location각각 토토 사이트 중(참조표 9-65그리고표 9-66자세한 내용). 대기 상태의 마지막 WAL 수신 위치는 WAL 수신 프로세스의 프로세스 상태에도 표시되며,ps명령(참조토토 결과 PostgreSQL : 문서 : 9.4 : 표준 유닉스 도구자세한 내용은).
당신은 다음을 통해 WAL 발신자 프로세스 목록을 검색할 수 있습니다.pg_stat_replication보기. 사이에 큰 차이가 있음pg_current_xlog_location그리고sent_location필드는 마스터 서버에 과부하가 걸렸음을 나타낼 수 있지만,sent_location그리고pg_last_xlog_receive_location대기 상태에서는 네트워크 지연이 있거나 대기 상태가 과부하 상태임을 나타낼 수 있습니다.
복제 슬롯은 모든 대기가 WAL 세그먼트를 수신할 때까지 마스터가 WAL 세그먼트를 제거하지 않도록 하고 마스터가 오류를 일으킬 수 있는 행을 제거하지 않도록 자동화된 방법을 제공합니다.복구 충돌토토 사이트 연결이 끊어진 경우에도 마찬가지입니다.
복제 슬롯을 사용하는 대신 다음을 사용하여 이전 WAL 세그먼트의 제거를 방지할 수 있습니다.wal_keep_segments또는 다음을 사용하여 세그먼트를 아카이브에 저장함으로써archive_command. 그러나 이러한 방법은 종종 필요한 것보다 더 많은 WAL 세그먼트를 유지하는 반면, 복제 슬롯은 필요한 것으로 알려진 세그먼트 수만 유지합니다. 이러한 방법의 장점은 공간 요구 사항을 제한한다는 것입니다.pg_xlog; 현재 복제 슬롯을 사용하여 이 작업을 수행할 수 있는 방법은 없습니다.
마찬가지로,hot_standby_feedback그리고vacuum_defer_cleanup_age관련 행이 진공에 의해 제거되는 것에 대한 보호를 제공하지만 전자는 대기가 연결되지 않은 기간 동안 보호를 제공하지 않으며 후자는 적절한 보호를 제공하기 위해 종종 높은 값으로 설정되어야 합니다. 복제 슬롯은 이러한 단점을 극복합니다.
각 복제 슬롯에는 소문자, 숫자 및 밑줄 문자를 포함할 수 있는 이름이 있습니다.
기존 복제 슬롯과 그 상태는 다음에서 볼 수 있습니다.보기.
슬롯은 스트리밍 복제 프로토콜을 통해 생성 및 삭제될 수 있습니다(참조PostgreSQL : 문서 : 9.4 : 토토 복제 프로토콜) 또는 SQL 함수를 통해(참조섹션 9.26.6).
다음과 같이 복제 슬롯을 생성할 수 있습니다:
postgres=# SELECT * FROM pg_create_physical_replication_slot('node_a_slot');
  슬롯_이름 | xlog_위치
-------------+---------------
 node_a_slot |
postgres=# SELECT 슬롯 이름, 슬롯 유형, 활성 FROM pg_replication_slots;
  슬롯_이름 | 슬롯 유형 | 활성 
------------+------------+---------
 node_a_slot | 물리적 | 에프
(1행)
이 슬롯을 사용하도록 토토 사이트를 구성하려면,기본_슬롯_이름대기에서 구성되어야 합니다recovery.conf. 다음은 간단한 예입니다.
standby_mode = '켜짐' Primary_conninfo = '호스트=192.168.1.50 포트=5432 사용자=foo 비밀번호=foopass' Primary_slot_name = 'node_a_slot'
연속 복제 기능을 사용하면 토토 사이트 서버가 복제 연결을 수락하고 WAL 레코드를 다른 토토 사이트 서버로 스트리밍하여 릴레이 역할을 할 수 있습니다. 이는 마스터에 대한 직접 연결 수를 줄이고 사이트 간 대역폭 오버헤드를 최소화하는 데 사용할 수 있습니다.
수신자와 발신자 역할을 모두 수행하는 대기를 계단식 대기라고 합니다. 마스터에 더 직접적으로 연결된 토토 사이트 서버를 업스트림 서버라고 하고, 더 멀리 있는 토토 사이트 서버를 다운스트림 서버라고 합니다. 계단식 복제는 다운스트림 서버의 수나 배열에 제한을 두지 않지만 각 토토 사이트 서버는 결국 단일 마스터/기본 서버에 연결되는 하나의 업스트림 서버에만 연결됩니다.
계단식 대기는 마스터에서 받은 WAL 레코드뿐만 아니라 아카이브에서 복원된 레코드도 보냅니다. 따라서 일부 업스트림 연결의 복제 연결이 종료되더라도 새 WAL 레코드를 사용할 수 있는 한 스트리밍 복제는 다운스트림으로 계속됩니다.
계단식 복제가 현재 비동기적입니다. 동기식 복제(참조섹션 25.2.8) 설정은 현재 계단식 복제에 영향을 주지 않습니다.
핫 토토 사이트 피드백은 계단식 배열에 관계없이 업스트림으로 전파됩니다.
업스트림 토토 사이트 서버가 새 마스터로 승격되면 다운스트림 서버는 다음과 같은 경우 새 마스터에서 계속 스트리밍됩니다.recovery_target_timeline다음으로 설정됨'최신'.
계단식 복제를 사용하려면, 계단식 대기가 복제 연결을 허용할 수 있도록 설정하십시오(즉, 설정max_wal_senders그리고hot_standby및 구성와이즈 토토 PostgreSQL : 문서 : 9.4 : PG_HBA.conf 파일). 또한 설정해야 합니다.primary_conninfo다운스트림 대기에서 계단식 대기를 가리킵니다.
PostgreSQL스트리밍 복제는 기본적으로 비동기식입니다. 기본 서버가 충돌하면 커밋된 일부 트랜잭션이 토토 사이트 서버에 복제되지 않아 데이터가 손실될 수 있습니다. 데이터 손실량은 장애 조치 시 복제 지연에 비례합니다.
동기 복제는 트랜잭션에 의한 모든 변경 사항이 하나의 동기 토토 사이트 서버로 전송되었는지 확인하는 기능을 제공합니다. 이는 트랜잭션 커밋이 제공하는 내구성의 표준 수준을 확장합니다. 이 보호 수준을 컴퓨터 과학 이론에서는 2-안전 복제라고 합니다.
동기 복제를 요청할 때 쓰기 트랜잭션의 각 커밋은 기본 서버와 토토 사이트 서버 모두의 디스크에 있는 트랜잭션 로그에 커밋이 기록되었다는 확인을 받을 때까지 기다립니다. 데이터가 손실될 수 있는 유일한 가능성은 기본 및 대기가 동시에 충돌하는 경우입니다. 시스템 관리자가 두 서버의 배치 및 관리에 주의를 기울이는 경우에만 이는 훨씬 더 높은 수준의 내구성을 제공할 수 있습니다. 확인을 기다리면 서버 충돌 시 변경 사항이 손실되지 않을 것이라는 사용자의 확신이 높아지지만 요청하는 트랜잭션에 대한 응답 시간도 필연적으로 늘어납니다. 최소 대기 시간은 기본에서 대기까지의 왕복 시간입니다.
읽기 전용 트랜잭션 및 트랜잭션 롤백은 토토 사이트 서버의 응답을 기다릴 필요가 없습니다. 하위 트랜잭션 커밋은 토토 사이트 서버의 응답을 기다리지 않고 최상위 커밋만 기다리게 됩니다. 데이터 로드 또는 인덱스 구축과 같은 장기 실행 작업은 최종 커밋 메시지까지 기다리지 않습니다. 모든 2단계 커밋 작업에는 준비와 커밋을 모두 포함하여 커밋 대기가 필요합니다.
스트리밍 복제가 구성되면 동기 복제 구성에는 한 가지 추가 구성 단계만 필요합니다.synchronous_standby_names비어 있지 않은 값으로 설정되어야 합니다.동기_커밋또한 다음으로 설정되어야 합니다.켜짐, 그러나 이것이 기본값이므로 일반적으로 변경할 필요가 없습니다. (참조섹션 18.5.1그리고섹션 18.6.2.) 이 구성을 사용하면 각 커밋은 토토 사이트 장치가 커밋 레코드를 내구성 있는 저장소에 기록했다는 확인을 기다리게 됩니다.동기_커밋개별 사용자가 설정할 수 있으므로 구성 파일에서 특정 사용자나 데이터베이스에 대해 구성하거나 애플리케이션별로 동적으로 구성하여 트랜잭션별로 내구성 보장을 제어할 수 있습니다.
커밋 레코드가 기본 디스크에 기록된 후 WAL 레코드는 대기 디스크로 전송됩니다. 토토 사이트 서버는 새로운 WAL 데이터 배치가 디스크에 기록될 때마다 응답 메시지를 보냅니다.wal_receiver_status_interval대기 모드에서는 0으로 설정됩니다. 대기가 처음으로 일치하는 대기인 경우(에 지정된 대로)synchronous_standby_names기본에서 해당 대기의 응답 메시지는 커밋 레코드가 수신되었다는 확인을 기다리는 사용자를 깨우는 데 사용됩니다. 이러한 매개변수를 사용하면 관리자는 동기 토토 사이트 서버가 되어야 하는 토토 사이트 서버를 지정할 수 있습니다. 동기 복제의 구성은 주로 마스터에서 이루어집니다. 명명된 대기는 마스터에 직접 연결되어야 합니다. 마스터는 계단식 복제를 사용하는 다운스트림 토토 사이트 서버에 대해 아무것도 모릅니다.
설정동기_커밋에remote_write각 커밋은 대기 장치가 커밋 레코드를 수신하여 자체 운영 체제에 기록했다는 확인을 기다리게 하지만 데이터가 대기 장치의 디스크에 플러시될 때까지 기다리지는 않습니다. 이 설정은 다음보다 약한 내구성 보장을 제공합니다.켜짐그렇습니다: 운영 체제 충돌 시 토토 사이트 장치가 데이터를 잃을 수 있지만 a는 아닙니다.포스트그레SQL충돌. 그러나 트랜잭션에 대한 응답 시간을 줄일 수 있으므로 실제로는 유용한 설정입니다. 기본 및 대기 충돌과 기본 데이터베이스가 동시에 손상된 경우에만 데이터 손실이 발생할 수 있습니다.
빠른 종료가 요청되면 사용자는 대기를 중지합니다. 그러나 비동기 복제를 사용할 때와 마찬가지로 미해결 WAL 레코드가 모두 현재 연결된 토토 사이트 서버로 전송될 때까지 서버는 완전히 종료되지 않습니다.
동기 복제에는 일반적으로 응용프로그램이 적절하게 작동할 수 있도록 신중하게 계획하고 배치한 토토 사이트 서버가 필요합니다. 대기는 시스템 리소스를 활용하지 않지만 전송이 확인될 때까지 트랜잭션 잠금이 계속 유지됩니다. 결과적으로 동기 복제를 부주의하게 사용하면 응답 시간이 늘어나고 경합이 높아져 데이터베이스 애플리케이션의 성능이 저하됩니다.
PostgreSQL애플리케이션 개발자가 복제를 통해 필요한 내구성 수준을 지정할 수 있습니다. 이는 시스템 전체에 대해 지정할 수 있지만 특정 사용자나 연결, 개별 트랜잭션에 대해서도 지정할 수 있습니다.
예를 들어, 애플리케이션 워크로드는 다음과 같이 구성될 수 있습니다. 변경 사항 중 10%는 중요한 고객 세부 정보이고, 변경 사항 중 90%는 사용자 간의 채팅 메시지와 같이 손실된 경우 비즈니스가 더 쉽게 생존할 수 있는 덜 중요한 데이터입니다.
애플리케이션 수준(기본)에서 지정된 동기 복제 옵션을 사용하면 전체 작업 부하의 속도를 저하시키지 않고 가장 중요한 변경 사항에 대해 동기 복제를 제공할 수 있습니다. 애플리케이션 수준 옵션은 고성능 애플리케이션에 대한 동기 복제의 이점을 허용하는 중요하고 실용적인 도구입니다.
네트워크 대역폭이 WAL 데이터 생성 속도보다 높아야 한다는 점을 고려해야 합니다.
커밋이 이루어진 시기동기_커밋다음으로 설정됨켜짐또는remote_write동기 대기가 응답할 때까지 기다립니다. 마지막 또는 유일한 대기가 충돌해야 하는 경우 응답이 발생하지 않을 수 있습니다.
데이터 손실을 피하기 위한 최선의 해결책은 마지막 남은 동기 대기를 잃지 않도록 하는 것입니다. 이는 다음을 사용하여 여러 잠재적 동기 대기의 이름을 지정함으로써 달성될 수 있습니다.synchronous_standby_names. 첫 번째로 명명된 토토 사이트는 동기 토토 사이트로 사용됩니다. 첫 번째 토토 사이트가 실패할 경우 이후에 나열된 토토 사이트가 동기 토토 사이트의 역할을 대신합니다.
대기 데이터베이스가 기본 데이터베이스에 처음 연결되면 아직 제대로 동기화되지 않습니다. 이는 다음과 같이 설명됩니다.따라잡기모드. 토토 사이트와 기본 사이의 지연이 처음으로 0에 도달하면 실시간으로 이동합니다.스트리밍상태. 대기가 생성된 직후에는 따라잡기 기간이 길어질 수 있습니다. 대기가 종료되면 대기가 종료된 시간에 따라 만회 기간이 늘어납니다. 대기는 도달한 후에만 동기 대기가 될 수 있습니다.스트리밍상태.
커밋이 승인을 기다리는 동안 기본이 다시 시작되면 기본 데이터베이스가 복구된 후 대기 중인 트랜잭션이 완전히 커밋된 것으로 표시됩니다. 기본 충돌이 발생했을 때 모든 대기가 미해결 WAL 데이터를 모두 수신했는지 확인할 수 있는 방법은 없습니다. 일부 트랜잭션은 기본에서 커밋된 것으로 표시되더라도 대기에서는 커밋된 것으로 표시되지 않을 수 있습니다. 우리가 제공하는 보증은 WAL 데이터가 토토 사이트 서버에서 안전하게 수신된 것으로 확인될 때까지 애플리케이션이 트랜잭션의 성공적인 커밋에 대한 명시적인 승인을 받지 않는다는 것입니다.
마지막 토토 사이트 서버가 정말로 손실된다면 비활성화해야 합니다synchronous_standby_names그리고 기본 서버에서 구성 파일을 다시 로드하세요.
기본 서버가 나머지 토토 사이트 서버로부터 격리된 경우 나머지 토토 사이트 서버 중 가장 적합한 후보로 장애 조치해야 합니다.
트랜잭션이 기다리는 동안 토토 사이트 서버를 다시 생성해야 하는 경우 pg_start_backup() 및 pg_stop_backup() 명령이 다음 세션에서 실행되는지 확인하세요.동기_커밋 = 꺼짐, 그렇지 않으면 해당 요청은 토토 사이트가 나타날 때까지 영원히 기다리게 됩니다.