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