게시자 노드가 다운된 경우에도 구독자 노드가 게시자 노드에서 데이터를 계속 복제하도록 허용하려면 게시자 노드에 해당하는 물리적 대기가 있어야 합니다. 구독에 해당하는 기본 서버의 논리적 슬롯은 다음을 지정하여 대기 서버와 동기화될 수 있습니다.장애 조치 = 참구독을 생성할 때. 보다섹션 47.2.36877_6906장애 조치매개변수는 대기가 승격된 후 해당 구독의 원활한 전환을 보장합니다. 새로운 기본 서버에서 계속해서 발행물을 구독할 수 있습니다.
슬롯 동기화 로직은 비동기식으로 복사되기 때문에 장애 조치가 발생하기 전에 복제 슬롯이 대기 서버에 동기화되었는지 확인해야 합니다. 성공적인 장애 조치를 보장하려면 대기 서버가 구독자보다 앞에 있어야 합니다. 이는 구성을 통해 달성할 수 있습니다.synchronized_standby_slots.
대기 서버가 실제로 특정 구독자에 대한 장애 복구 준비가 되었는지 확인하려면 다음 단계에 따라 해당 구독자에게 필요한 모든 논리적 복제 슬롯이 대기 서버와 동기화되었는지 확인하세요.
구독자 노드에서 다음 SQL을 사용하여 승격하려는 대기에 동기화되어야 하는 복제 슬롯을 식별하십시오. 이 쿼리는 장애 조치가 활성화된 구독과 연결된 관련 복제 슬롯을 반환합니다.
/* 하위 # */ 선택
array_agg(quote_literal(s.subslotname)) AS 슬롯
pg_subscription 에서
s.subfailover 및
s.subslotname은 NULL이 아닙니다.
슬롯
-------
'하위1','하위2','하위3'
구독자 노드에서 다음 SQL을 사용하여 어떤 테이블 동기화 슬롯을 승격시키려는 대기에 동기화해야 하는지 식별하십시오. 이 쿼리는 장애 조치가 활성화된 구독이 포함된 각 데이터베이스에서 실행되어야 합니다. 테이블 동기화 슬롯은 테이블 복사가 완료된 경우에만 대기 서버에 동기화되어야 합니다(참조젠 토토 : 문서 : 18 : 52.55. pg_subscription_rel). 다른 시나리오에서는 테이블 동기화 슬롯이 동기화되었는지 확인할 필요가 없습니다. 이러한 경우 테이블 동기화 슬롯은 새 기본 서버에서 삭제되거나 다시 생성되기 때문입니다.
/* 하위 # */ 선택
array_agg(quote_literal(slot_name)) AS 슬롯
에서
(
SELECT CONCAT('pg_', srsubid, '_sync_', srrelid, '_', ctl.system_identifier) AS 슬롯_이름
pg_control_system() ctl, pg_subscription_rel r, pg_subscription s에서
r.srsubstate = 'f' AND s.oid = r.srsubid AND s.subfailover
);
슬롯
-------
'pg_16394_sync_16385_7394666715149055164'
위에서 식별된 논리적 복제 슬롯이 대기 서버에 존재하고 장애 조치 준비가 되어 있는지 확인하십시오.
/* 대기 # */ SELECT 슬롯_이름, (동기화됨 AND NOT 임시 AND 무효화_이유는 NULL) AS passailover_ready
pg_replication_slots에서
슬롯 이름이 있는 곳
('하위1','하위2','하위3', 'pg_16394_sync_16385_7394666715149055164');
슬롯_이름 | 장애 조치 준비
-------------------------------+----------------
하위1 | 티
하위 2 | 티
하위3 | 티
pg_16394_sync_16385_7394666715149055164 | 티
(4행)
대기 서버에 모든 슬롯이 있고 그 결과(failover_ready10691_10822
위 절차의 처음 두 단계는 다음을 위한 것입니다.PostgreSQL구독자. 복제 슬롯의 전체 목록을 얻으려면 장애 조치 후 지정된 대기 노드에서 서비스를 제공할 각 구독자 노드에서 이러한 단계를 실행하는 것이 좋습니다. 그런 다음 3단계에서 이 목록을 확인하여 장애 조치 준비 상태를 확인할 수 있습니다. 비-포스트그레SQL반면에 구독자는 자신의 방법을 사용하여 해당 구독에서 사용하는 스포츠 토토 슬롯을 식별할 수 있습니다.
계획된 장애 조치 중과 같은 일부 경우에는 모든 가입자가 다음을 수행하는지 확인해야 합니다.PostgreSQL또는 비-포스트그레SQL, 지정된 대기 서버로 장애 조치한 후 복제를 계속할 수 있습니다. 이러한 경우 위의 처음 두 단계를 수행하는 대신 다음 SQL을 사용하여 승격할 대기에 동기화해야 하는 기본 복제 슬롯을 식별합니다. 이 쿼리는 장애 조치가 활성화된 모든 구독과 연결된 관련 복제 슬롯을 반환합니다.
/* 기본 # */ SELECT array_agg(quote_literal(r.slot_name)) AS 슬롯
pg_replication_slots r에서
r.failover가 아닌 r.temporary가 있는 경우;
슬롯
-------
'sub1','sub2','sub3', 'pg_16394_sync_16385_7394666715149055164'
문서에 올바르지 않은 내용이 있으면 일치하지 않습니다. 특정 기능에 대한 경험이 있거나 추가 설명이 필요한 경우 이용해주세요이 양식문서 문제를 보고합니다.