29.3. 논리적 젠 토토 장애 조치#

가입자 노드가 게시자 노드가 줄어든 경우에도 게시자 노드에서 데이터를 젠 토토 할 수 있도록하는 것은 게시자 노드에 해당하는 물리적 대기가 있어야합니다. 구독에 해당하는 기본 서버의 논리 슬롯을 지정하여 대기 서버와 동기화 할 수 있습니다Failover = True구독을 만들 때. 보다섹션 47.2.3자세한 내용. 활성화Failover매개 변수는 대기가 홍보 된 후 해당 구독의 원활한 전환을 보장합니다. 그들은 새로운 기본 서버에서 출판물을 계속 구독 할 수 있습니다.

슬롯 동기화 로직이 비동기로 복사되므로 장애 조치가 발생하기 전에 젠 토토 슬롯이 대기 서버에 동기화되었음을 확인해야합니다. 성공적인 장애 조치를 보장하려면 대기 서버가 가입자보다 앞서 있어야합니다. 이것은 구성하여 달성 할 수 있습니다synchronized_standby_slots.

주어진 가입자에 대한 대기 서버가 실제로 장애 조치 준비가되었음을 확인하려면 다음 단계를 따라 가입자가 요구하는 모든 논리적 젠 토토 슬롯이 대기 서버와 동기화되었는지 확인하십시오.

  1. 가입자 노드에서 다음 SQL을 사용하여 홍보하려는 대기와 동기화 해야하는 젠 토토 슬롯을 식별하십시오. 이 쿼리는 장애 조치 지원 구독과 관련된 관련 젠 토토 슬롯을 반환합니다.

    test_sub =# 선택
                   Array_agg (QUOTE_LITERAL (S.SUBSLOTNAME)) 슬롯으로
               pg_subscription s에서
               S.Subfailover 및
                     s.subslotname은 null이 아닙니다.
     슬롯
    -------
      'sub1', 'sub2', 'sub3'
  2. 가입자 노드에서 다음 SQL을 사용하여 홍보 할 대기와 동기화 해야하는 테이블 동기화 슬롯을 식별하십시오. 이 쿼리는 Failover 지원 구독이 포함 된 각 데이터베이스에서 실행해야합니다. 테이블 동기 슬롯은 테이블 사본이 완료된 경우에만 대기 서버에 동기화해야합니다 (참조범퍼카 젠 토토 : 문서 : 17 : 51.55. pg_subscription_rel). 테이블 동기 슬롯이 새로운 기본 서버에서 삭제되거나 다시 제작 될 것이므로 다른 시나리오에서 테이블 동기 슬롯이 동기화 될 필요가 없습니다..

    test_sub =# 선택
                   Array_agg (quote_literal (slot_name)) 슬롯으로
               에서
               (
                   slot_name으로 concat ( 'pg_', srsubid, '_sync_', srrelid, '_', ctl.system_identifier)를 선택하십시오
                   PG_CONTROL_SYSTEM () CTL, PG_SUBSCRIPTION_REL R, PG_SUBSCRIPTION S에서
                   여기서 r.srsubstate = 'f'및 s.oid = r.srsubid 및 s.subfailover
               );
     슬롯
    -------
      'PG_16394_SYNC_16385_739466715149055164'
  3. 위에서 식별 된 논리적 젠 토토 슬롯이 대기 서버에 존재하고 장애 조치 준비가되었는지 확인하십시오.

    test_standby =# SLOT_NAME, (일시적 및 invalidation_Reason이 NULL이 아닌 동기화 및 동기화)를 선택하십시오.
                   pg_replication_slots에서
                   slot_name이있는 곳
                       ( 'sub1', 'sub2', 'sub3', 'pg_16394_sync_16385_739466715149055164');
      slot_name | failover_ready
    ---------------------------------------------------------------
      sub1 | 티
      Sub2 | 티
      Sub3 | 티
      PG_16394_SYNC_16385_739466715149055164 | 티
    (4 줄)

모든 슬롯이 대기 서버에 존재하는 경우 결과 (failover_ready) 위의 SQL 쿼리의 사실은 사실입니다. 그러면 기존 구독은 새로운 기본 서버의 출판물에 계속 구독 할 수 있습니다.

위 절차의 첫 두 단계는 A입니다.postgresql가입자. 실패 후 지정된 대기에서 제공되는 각 가입자 노드에서 이러한 단계를 실행하는 것이 좋습니다. 이 목록은 3 단계에서 확인하여 장애 조치 준비를 보장 할 수 있습니다. 비PostgreSQL가입자는 자체 방법을 사용하여 해당 구독에서 사용하는 젠 토토 슬롯을 식별 할 수 있습니다..

계획된 장애 조치와 같은 경우에도 모든 가입자가를 확인해야합니다.PostgreSQL또는 비postgresql, 주어진 대기 서버로 장애 조치 후 젠 토토를 계속할 수 있습니다. 이러한 경우 위의 첫 두 단계를 수행하는 대신 다음 SQL을 사용하여 홍보를위한 대기와 동기화 해야하는 기본의 젠 토토 슬롯을 식별하십시오. 이 쿼리는 모든 장애 조치 지원 구독과 관련된 관련 젠 토토 슬롯을 반환합니다.

/ * 기본 # */ array_agg (quote_literal (r.slot_name))을 슬롯으로 선택하십시오
               pg_replication_slots r
               R.Failover가 아니라 R.Temporary;
 슬롯
-------
  'sub1', 'sub2', 'sub3', 'pg_16394_sync_16385_739466715149055164'

정정 제출

문서에 올바르지 않은 내용이 있으면 일치하지 않습니다. 특정 기능에 대한 귀하의 경험 또는 추가 설명이 필요합니다. 사용이 양식문서 문제를보고하려면