| PostgreSQL 9.3.25 문서 | ||||
|---|---|---|---|---|
| 이전 | 위로 | 25장. 높음 가용성, 부하 분산 및 복제 | 스포츠 토토 베트맨 : 문서 : 9.3 : 핫 스포츠 토토 베트맨 | |
다음에 설명된 내장 대기 모드의 대안 이전 섹션은 다음을 사용하는 것입니다.restore_command보관 위치를 폴링합니다. 이는 버전 8.4 이하에서 사용할 수 있는 유일한 옵션이었습니다. ~ 안에 이 설정, 설정대기_모드꺼져, 왜냐면 대기 작업에 필요한 폴링을 구현 중입니다. 당신 자신. 참조postgresql참조용 모듈 이를 구현합니다.
이 모드에서 서버는 WAL을 한 번에 한 파일씩 적용합니다. 시간이므로 쿼리를 위해 대기 서버를 사용하는 경우(Hot 참조) 대기), 마스터의 작업과 실행 사이에 지연이 있습니다. 해당 작업은 시간에 따라 대기 모드에서 표시됩니다. WAL 파일을 채우는 데 시간이 걸립니다.archive_timeout그 지연을 만드는 데 사용될 수 있습니다 더 짧습니다. 또한 스트리밍 복제를 결합할 수 없습니다. 이 토토 결과으로.
기본 및 대기 서버 모두에서 발생하는 작업 일반적인 연속 보관 및 복구 작업입니다. 유일한 포인트 두 데이터베이스 서버 간의 접촉 정보는 WAL의 아카이브입니다. 둘 다 공유하는 파일: 아카이브에 대한 기본 쓰기, 대기 아카이브에서 읽는 중입니다. WAL이 보장되도록 주의를 기울여야 합니다. 별도의 기본 서버의 아카이브는 서로 혼합되지 않습니다. 또는 혼란스러워요. 필요한 경우에만 아카이브가 클 필요는 없습니다. 대기 작업을 위해.
느슨하게 연결된 두 서버를 작동시키는 마법 함께는 단순히 arestore_command사용됨 다음 WAL 파일을 요청하면 이를 기다리는 대기 모드 기본에서 사용할 수 있게 됩니다. 그만큼restore_command다음에 지정됨recovery.conf파일을 대기 서버에 저장하세요. 정상 복구 처리는 WAL 아카이브에서 파일을 요청합니다. 파일을 사용할 수 없는 경우 보고 실패. 대기용 처리 중 다음 WAL 파일을 사용할 수 없는 것은 정상이므로 대기는 그것이 나타날 때까지 기다려야 합니다. 다음으로 끝나는 파일의 경우:.역사기다릴 필요가 없습니다. 0이 아닌 반환 코드가 반환되어야 합니다. 대기restore_command맞춤 스크립트로 작성 가능 다음 WAL 파일이 있는지 폴링한 후 반복됩니다. 장애 조치(failover)를 트리거할 수 있는 방법도 있어야 합니다. 방해하다restore_command, 휴식 루프를 실행하고 파일을 찾을 수 없음 오류를 대기 서버에 반환합니다. 이것 복구가 종료되고 대기 모드가 정상적으로 나타납니다. 섬기는 사람.
적합한 의사 코드restore_command다음과 같습니다:
트리거됨 = false;
while (!NextWALFileReady() && !트리거됨)
    수면(100000L);         /* ~0.1초 동안 기다림 */
    if(CheckForExternalTrigger())
        트리거 = 사실;
기다림의 실제 사례restore_command다음에서 제공됩니다.pg_standby모듈. 올바른 방법에 대한 참고 자료로 사용해야 합니다. 위에서 설명한 논리를 구현하십시오. 다음과 같이 확장할 수도 있습니다. 특정 구성 및 환경을 지원하는 데 필요합니다.
장애 조치를 실행하는 방법은 다음의 중요한 부분입니다. 기획과 디자인. 한 가지 잠재적인 옵션은 다음과 같습니다.restore_command명령. 에 대해 한 번 실행됩니다. 각 WAL 파일을 실행하지만 프로세스는restore_command각 파일마다 생성되고 종료됩니다. 따라서 데몬이나 서버 프로세스가 없으며 신호 또는 신호가 없습니다. 핸들러를 사용할 수 없습니다. 그러므로,restore_command장애 조치를 실행하는 데 적합하지 않습니다. 특히 사용하는 경우 간단한 시간 초과 기능을 사용할 수 있습니다. 알려진와 함께archive_timeout기본 설정. 하지만, 네트워크 문제가 있거나 사용량이 많기 때문에 다소 오류가 발생하기 쉽습니다. 기본 서버는 장애 조치를 시작하기에 충분할 수 있습니다. 에이 명시적인 트리거 생성과 같은 알림 메커니즘 파일을 정리할 수 있다면 이상적입니다.
이것을 사용하여 대기 서버를 구성하는 간단한 절차 대체 방법은 다음과 같습니다. 각 단계에 대한 자세한 내용은 명시된 대로 이전 섹션을 참조하세요.
기본 및 대기 시스템을 다음과 거의 동일하게 설정하십시오. 두 개의 동일한 복사본을 포함하여 가능합니다.포스트그레SQL동일한 릴리스 레벨에서.
기본에서 WAL 아카이브로 지속적인 아카이브 설정 대기 서버의 디렉터리입니다. 다음을 확인하세요.archive_mode, archive_command그리고archive_timeout기본에 적절하게 설정되어 있습니다(참조섹션 24.3.1).
기본 서버의 기본 백업을 만드세요(참조섹션 24.3.2), 이 데이터를 대기에 로드합니다.
로컬 WAL 아카이브에서 대기 서버의 복구를 시작합니다. 를 사용하여recovery.conf다음을 지정하는restore_command설명대로 기다립니다 이전에 (참조섹션 24.3.4).
복구는 WAL 아카이브를 읽기 전용으로 처리하므로 WAL 파일이 한 번 대기 시스템에 복사되었습니다. 나중에 테이프에 복사할 수 있습니다. 대기 데이터베이스 서버에서 읽는 것과 동시에. 따라서 고가용성을 위한 대기 서버를 운영하는 것은 파일이 장기간 저장되는 동시에 수행됩니다. 재해 복구 목적.
테스트 목적으로 기본 및 동일한 시스템의 대기 서버. 이것은 어떤 것도 제공하지 않습니다 서버 견고성이 향상될 가치가 있으며, 그렇지 않을 수도 있습니다. HA로 설명됩니다.
다음을 사용하여 기록 기반 로그 전달을 구현할 수도 있습니다. 이 대체 방법은 맞춤 개발이 필요하지만 변경 사항은 여전히 핫 스탠바이 쿼리에만 표시됩니다. 전체 WAL 파일이 배송된 후.
외부 프로그램이 다음을 호출할 수 있습니다.pg_xlogfile_name_offset()함수(참조섹션 9.26) 파일 이름을 알아내기 위해
현재 WAL 끝의 정확한 바이트 오프셋. 그것
그러면 WAL 파일에 직접 액세스하여 WAL 파일에서 데이터를 복사할 수 있습니다.
WAL의 마지막으로 알려진 끝부터 현재 끝을 거쳐 대기까지
서버. 이 접근 방식을 사용하면 데이터 손실 기간은 다음과 같습니다.
복사 프로그램의 폴링 주기 시간은 매우 작을 수 있습니다.
부분적으로 사용하도록 강요하여 낭비되는 대역폭이 없습니다.
보관할 세그먼트 파일. 대기 서버'restore_command스크립트는 다음 작업만 처리할 수 있습니다.
전체 WAL 파일이므로 증분 복사된 데이터는 일반적으로
대기 서버에서 사용할 수 있게 되었습니다. 다음과 같은 경우에만 사용됩니다.
기본 다이 — 그런 다음 마지막 부분 WAL 파일이 대기에 공급됩니다.
그것이 나타나도록 허용하기 전에. 이에 대한 올바른 구현
프로세스에는 다음의 협조가 필요합니다.restore_command데이터 복사가 포함된 스크립트
프토토 결과램.
다음으로 시작PostgreSQL버전 9.0에서는 스트리밍 복제를 사용할 수 있습니다(참조섹션 25.2.5) ~ 더 적은 노력으로 동일한 이점을 얻을 수 있습니다.
| 이전 | 배트맨 토토 : 문서 : 9.3 : 배트맨 토토 9.3.25 문서화 | 다음 | 
| 장애 조치 | 위로 | 상시 대기 |