이 문서는 지원되지 않는 버전의 PostgreSQL을위한 것입니다.
당신은에 대해 같은 페이지를 보려고 할 수 있습니다현재버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

25.4. 로그를위한 대체 윈 토토 해운

이전 섹션은 A 사용입니다.Restore_command아카이브 위치를 폴링합니다. 이것은 8.4 이하 버전에서 사용할 수있는 유일한 옵션이었습니다. ~ 안에 이 설정, setSTATDBY_MODEOff, 대기에 필요한 폴링을 구현하고 있기 때문입니다 직접 작동하십시오. 참조pg_standby참조 모듈 이것의 구현.

이 모드에서 서버는 wal one 파일을 적용합니다. 시간, 쿼리에 대기 서버를 사용하는 경우 (핫 참조 대기), 마스터의 행동과 대기에서 동작이 보이면 WAL 파일을 채우는 데 시간이 걸립니다.archive_timeout지연에 사용될 수 있습니다 짧은. 또한 스트리밍 복제를 결합 할 수 없습니다 이 윈 토토으로.

기본 서버 및 대기 서버에서 발생하는 작업 정상적인 연속 보관 및 복구 작업입니다. 유일한 두 데이터베이스 서버 간의 연락처는 아카이브입니다. 공유하는 책치 파일 : 아카이브에 1 차 쓰기, 아카이브에서 대기 읽기. 보장하기 위해주의를 기울여야합니다 별도의 기본 서버의 WAL 아카이브가 함께 혼합되거나 혼란스러워. 아카이브는 크게 크지 않아도됩니다 대기 작동에만 필요합니다.

두 개의 느슨하게 결합 된 서버를 작동시키는 마법 함께 함께Restore_command다음 WAL 파일을 요청할 때 대기에 사용됩니다. 기본에서 사용할 수있게됩니다. 그만큼Restore_command에 지정됨복구 .conf대기 서버의 파일. 정상 복구 처리는 WAL 아카이브에서 파일을 요청합니다. 파일을 사용할 수없는 경우 실패보고. 대기 처리 다음 WAL 파일을 사용할 수없는 것이 정상입니다. 따라서 대기는 그것이 나타날 때까지 기다려야합니다. 끝나는 파일의 경우.Backup또는.history기다릴 필요가없고 0이 아닌 것입니다 반환 코드를 반환해야합니다. 대기Restore_command사용자 정의 스크립트로 작성할 수 있습니다 다음 WAL 파일의 존재에 대한 폴링 후 루프. 장애 조치를 트리거하는 윈 토토도 있어야합니다. 방해Restore_command루프하고 파일 공간 오류를 대기 서버로 반환합니다. 이것은 회복을 끝내고 대기는 정상으로 나타납니다. 섬기는 사람.

적절한 경우 PseudocodeRestore_commandis :

트리거 = 거짓;
while (! nextwalfileready () &&! 트리거)

    수면 (100000L);         / * ~ 0.1 초 동안 기다리십시오 */
    if (checkforexternaltrigger ())
        트리거 = 참으로;

대기중인 작업 예Restore_command에 제공됨pg_standby모듈. a로 사용해야합니다 설명 된 논리를 올바르게 구현하는 윈 토토에 대한 참조 위에. 특정 지원을 위해 필요에 따라 확장 할 수 있습니다. 구성 및 환경.

장애 조치를 트리거하는 윈 토토은 중요한 부분입니다. 계획과 디자인. 잠재적 옵션 중 하나는입니다.Restore_Command명령. 한 번 실행됩니다 각 WAL 파일이지만 실행되는 프로세스Restore_Command각 파일에 대해 생성되고 사망합니다. 따라서 데몬이나 서버 프로세스가없고 신호 또는 신호가 없습니다. 핸들러는 사용할 수 없습니다. 따라서Restore_command트리거에 적합하지 않습니다 장애 조치. 간단한 타임 아웃 시설을 사용할 수 있으며 특히 알려진 사람과 함께 사용되는 경우archive_timeout기본 설정. 하지만, 네트워크 문제 또는 바쁘기 때문에 이것은 다소 오류가 발생합니다. 기본 서버는 장애 조치를 시작하기에 충분할 수 있습니다. 에이 트리거의 명시 적 생성과 같은 알림 메커니즘 파일이 이상적입니다. 이것이 배열 될 수 있다면.

25.4.1. 구현

대기 서버를 사용하는 짧은 절차 이 대체 윈 토토은 다음과 같습니다. 각각에 대한 자세한 내용은 단계, 언급 된대로 이전 섹션을 참조하십시오.

  1. 기본 및 대기 시스템을 거의 동일하게 설정하십시오 가능한 한 두 개의 동일한 사본을 포함하여PostgreSQL같은 릴리스에서 수준.

  2. 기본에서 월까지 연속 아카이브 설정 대기 서버의 아카이브 디렉토리. 확인archive_mode, archive_commandandarchive_timeout기본에 적절하게 설정되어 있습니다 (참조섹션 24.3.1).

  3. 기본 서버의 기본 백업을 만듭니다 (참조섹션 24.3.2),이 데이터를 대기에로드하십시오.

  4. 로컬 월에서 대기 서버에서 복구 시작 아카이브, A복구 .confa를 지정합니다Restore_command앞에서 설명한대로 기다리는 (참조섹션 24.3.3).

복구는 WAL 아카이브를 읽기 전용으로 취급하므로 WAL 일단 WAL 파일이 대기 시스템에 복사되었습니다. 대기로 읽는 것과 동시에 테이프 데이터베이스 서버. 따라서 대기 서버를 실행합니다 가용성은 파일과 동시에 수행 할 수 있습니다. 장기 재해 복구 목적으로 저장됩니다.

테스트 목적으로, 1 차 및 동일한 시스템의 대기 서버. 이것은 제공하지 않습니다 서버 견고성에 대한 가치있는 개선도 가능하지도 않습니다 ha.

25.4.2. 레코드 기반 윈 토토 해운

레코드 기반 로그 배송을 구현할 수도 있습니다 이 대체 윈 토토을 사용하지만 사용자 정의가 필요합니다 개발 및 변경 사항은 여전히 ​​뜨거운 것으로 보일 것입니다. 전체 WAL 파일이 배송 된 후 대기 쿼리.

외부 프윈 토토램은 호출 할 수 있습니다.pg_xlogfile_name_offset ()함수 (참조PostgreSQL : 문서 : 9.1 : 스포츠 토토 베트맨 스포츠 토토 베트맨 스포츠 토토 베트맨) 파일 이름과 정확한 바이트 오프셋 WAL의 현재 끝. 그런 다음 WAL 파일에 직접 액세스 할 수 있습니다 그리고 WAL의 마지막 끝에서 데이터를 현재는 대기 서버로 끝납니다. 이 접근법으로 데이터 손실의 창은 매우 작을 수있는 복사 프로그램은 없습니다. 부분적으로 사용 된 세그먼트 파일을 강제하여 대역폭을 낭비합니다 보관해야합니다. 대기 서버 'Restore_command스크립트는 전체 만 다룰 수 있습니다 WAL 파일, 따라서 점진적으로 복사 된 데이터는 보통이 아닙니다. 대기 서버에서 사용할 수 있습니다. 그것은 단지 사용됩니다 1 차 죽음 - 마지막 부분 월 파일은 대기하기 전에 대기. 올바른 이 프로세스의 구현에는의 협력이 필요합니다.Restore_command데이터가있는 스크립트 복사 프윈 토토램.

시작PostgreSQL버전 9.0, 스트리밍 복제를 사용할 수 있습니다 (참조섹션 25.2.5) 적은 노력으로 동일한 혜택을 얻으려면