젠 토토 : 문서 : 9.6 : 젠 토토 9.6 | |||
---|---|---|---|
배트맨 토토 : 문서 : 9.6 : Failover | 토토 베이 : 문서 : 9.6 : 고 가용성,로드 밸런싱 및 복제 | 26 장. 고 가용성,로드 밸런싱 및 복제 | 스포츠 토토 결과 PostgreSQL : 문서 : 9.6 : 핫 스탠드 |
이전 섹션에 설명 된 내장 대기 모드에 대한 대안은 a를 사용하는 것입니다.Restore_command아카이브 위치를 폴링합니다. 이것은 8.4 이하 버전에서 사용할 수있는 유일한 옵션이었습니다. 이 설정에서 SETSTATDBY_MODEOFF, 대기 작동에 필요한 폴링을 직접 구현하고 있기 때문에. 참조pg_standby이것의 참조 구현 모듈.
이 모드에서 서버는 한 번에 한 번에 WAL 파일을 적용하므로 대기 서버를 쿼리에 사용하면 마스터의 조치와 대기에서 동작이 보이는 시간 사이에 지연이 있습니다. WAL 파일을 채우는 데 걸리는 시간에 해당합니다.archive_timeout지연을 더 짧게 만드는 데 사용될 수 있습니다. 또한 스트리밍 복제를이 범퍼카 토토과 결합 할 수 없습니다.
기본 서버 및 대기 서버에서 발생하는 작업은 일반적인 연속 보관 및 복구 작업입니다. 두 데이터베이스 서버 간의 유일한 연락처는 공유하는 WAL 파일의 아카이브 : 아카이브에 기본 쓰기, 아카이브에서 대기 읽기입니다. 별도의 기본 서버의 WAL 아카이브가 함께 혼합되거나 혼란스러워지지 않도록주의해야합니다. 대기 작동에만 필요한 경우 아카이브가 크지 않아도됩니다.
두 개의 느슨하게 결합 된 서버를 함께 작동하게 만드는 마법은 단순히 A입니다.Restore_command다음 WAL 파일을 요청할 때 기본에서 사용할 수 있기를 기다리는 대기에서 사용됩니다. 그만큼Restore_command에 지정됨복구 .conf대기 서버의 파일. 정상 복구 처리는 WAL 아카이브에서 파일을 요청하여 파일을 사용할 수없는 경우 실패를보고합니다. 대기 처리의 경우 다음 WAL 파일을 사용할 수없는 것이 정상이므로 대기는 나타날 때까지 기다려야합니다. 끝나는 파일의 경우.history대기 할 필요가 없으며 0이 아닌 반환 코드를 반환해야합니다. 대기Restore_command다음 WAL 파일의 존재를 위해 폴링 후 루프가있는 사용자 정의 스크립트로 작성할 수 있습니다. 장애 조치를 트리거하는 범퍼카 토토도 있어야하며, 이는를 방해해야합니다.Restore_command, 루프를 나누고 파일이없는 오류를 대기 서버에 반환합니다. 이로 인해 복구가 끝나고 대기는 일반 서버로 나타납니다.
적절한 용도에 대한 슈도 코드Restore_commandis :
트리거 = 거짓; while (! nextwalfileready () &&! 트리거) 수면 (100000L); / * ~ 0.1 초 동안 기다리십시오 */ if (checkforexternaltrigger ()) 트리거 = 참으로;
대기중인 작업 예Restore_command에서 제공됩니다pg_standby모듈. 위에서 설명한 논리를 올바르게 구현하는 범퍼카 토토에 대한 참조로 사용해야합니다. 특정 구성 및 환경을 지원하기 위해 필요에 따라 확장 할 수도 있습니다.
장애 조치를 트리거하는 범퍼카 토토은 계획 및 설계의 중요한 부분입니다. 잠재적 옵션 중 하나는입니다.Restore_command명령. 각 WAL 파일에 대해 한 번 실행되지만을 실행하는 프로세스Restore_command각 파일마다 생성되어 다이가 발생하므로 데몬 또는 서버 프로세스가 없으며 신호 또는 신호 핸들러를 사용할 수 없습니다. 따라서Restore_command는 장애 조치를 트리거하는 데 적합하지 않습니다. 간단한 타임 아웃 시설을 사용할 수 있습니다. 특히 알려진 사람과 함께 사용하는 경우archive_timeout기본 설정. 그러나 네트워크 문제 나 바쁜 기본 서버가 장애 조치를 시작하기에 충분할 수 있으므로 이는 오류가 다소 오류가 발생합니다. 트리거 파일의 명시 적 생성과 같은 알림 메커니즘이 이상적입니다.
이 대체 범퍼카 토토을 사용하여 대기 서버를 구성하기위한 짧은 절차는 다음과 같습니다. 각 단계에 대한 자세한 내용은 언급 된대로 이전 섹션을 참조하십시오.
|PostgreSQL같은 릴리스 레벨에서.
대기 서버의 기본에서 WAL 아카이브 디렉토리로 연속 아카이브를 설정합니다. 확인archive_mode, archive_command및archive_timeout기본에 적절하게 설정되어 있습니다 (참조섹션 25.3.1).
기본 서버의 기본 백업을 만듭니다 (참조섹션 25.3.2),이 데이터를 대기에로드하십시오.
로컬 WAL 아카이브에서 대기 서버에서 복구를 시작합니다.복구 .confa를 지정합니다Restore_Command앞에서 설명한대로 기다리는 (참조섹션 25.3.4).
복구는 WAL 아카이브를 읽기 전용으로 취급하므로 WAL 파일이 대기 시스템에 복사되면 대기 데이터베이스 서버에서 읽는 것과 동시에 테이프에 복사 할 수 있습니다. 따라서 고 가용성을 위해 대기 서버를 실행하는 것은 파일이 장기 재해 복구 목적으로 저장되는 것과 동시에 수행 할 수 있습니다.
테스트 목적으로 동일한 시스템에서 기본 서버를 실행할 수 있습니다. 이것은 서버 견고성에 대한 가치있는 개선을 제공하지 않으며 HA로 묘사되지도 않습니다..
이 대체 범퍼카 토토을 사용하여 레코드 기반 로그 배송을 구현할 수도 있지만 사용자 지정 개발이 필요하며 전체 WAL 파일이 배송 된 후에도 핫 스탠드 쿼리로만 변경 될 수 있습니다..
외부 프범퍼카 토토램은 호출 할 수 있습니다.pg_xlogfile_name_offset ()
함수 (참조PostgreSQL : 문서 : 9.6 : 시스템 관리 스포츠 토토) WAL의 현재 끝에서 파일 이름과 정확한 바이트 오프셋을 찾으려면. 그런 다음 WAL 파일에 직접 액세스하고 대기 서버로의 현재 끝을 통해 WAL의 마지막 끝에서 데이터를 복사 할 수 있습니다. 이 접근법을 사용하면 데이터 손실의 창은 복사 프로그램의 폴링주기 시간이며, 이는 매우 작을 수 있으며 부분적으로 사용 된 세그먼트 파일을 보관할 수 있도록 대역폭이 낭비되지 않습니다. 대기 서버 'Restore_command스크립트는 전체 WAL 파일 만 처리 할 수 있으므로 점진적으로 복사 된 데이터는 일반적으로 대기 서버에서 사용할 수 없습니다. 1 차가 다가올 때만 사용됩니다. 마지막 부분 월 파일은 대기에 공급되기 전에 대기에 공급됩니다. 이 프로세스의 올바른 구현에는의 협력이 필요합니다.Restore_command데이터 복사 프범퍼카 토토램이있는 스크립트.
시작PostgreSQL버전 9.0, 스트리밍 복제를 사용할 수 있습니다 (참조섹션 26.2.5) 노력으로 동일한 혜택을 달성하려면