47.2. 토토 핫 디코딩 개념#

47.2.1. 논리 디코딩#

논리 디코딩은 데이터베이스 테이블의 모든 지속적인 변경 사항을 데이터베이스의 내부 상태에 대한 자세한 지식없이 해석 할 수있는 일관성 있고 이해하기 쉬운 형식으로 추출하는 과정입니다.

inpostgresql, 논리 디코딩은의 내용을 디코딩하여 구현됩니다.PostgreSQL : 문서 : 17 : 28 장. 스포츠 토토 결과 쓰기 로그10429_10555

47.2.2. 복제 슬롯#

토토 핫 복제의 맥락에서 슬롯은 원점 서버에서 작성된 순서대로 클라이언트에게 재생할 수있는 변경 스트림을 나타냅니다. 각 슬롯은 단일 데이터베이스에서 일련의 변경을 스트리밍합니다.

note

postgresql스트리밍 복제 슬롯도 있습니다 (참조섹션 26.2.5), 그러나 그것들은 다소 다르게 사용됩니다.

복제 슬롯에는 a의 모든 데이터베이스에서 고유 한 식별자가 있습니다.PostgreSQL클러스터. 슬롯은 그것들을 사용하여 연결과 독립적으로 지속되며 충돌 안전입니다.

논리 슬롯은 정상 작동에서 각 변경 사항을 한 번만 방출합니다. 각 슬롯의 현재 위치는 체크 포인트에서만 유지되므로 충돌의 경우 슬롯이 이전 LSN으로 돌아올 수 있으므로 서버가 다시 시작될 때 최근 변경 사항이 다시 전송됩니다. 논리적 디코딩 클라이언트는 동일한 메시지를 두 번 이상 처리하여 악영향을 미치지 않습니다. 클라이언트는 디코딩 할 때 본 마지막 LSN을 기록하고 반복 된 데이터를 건너 뛰거나 (복제 프로토콜을 사용할 때) 서버가 시작점을 결정하게하기보다는 해당 LSN에서 디코딩을 요청하도록 요청할 수 있습니다. 복제 진행 추적 기능은이 목적을 위해 설계되었습니다. 참조PostgreSQL : 문서 : 17 : 48 장. 스포츠 토토 사이트 진행 추적.

단일 데이터베이스에는 다중 독립 슬롯이 존재할 수 있습니다. 각 슬롯에는 자체 상태가있어 다른 소비자가 데이터베이스 변경 스트림에서 다른 지점에서 변경 사항을받을 수 있습니다. 대부분의 응용 분야의 경우 각 소비자에게 별도의 슬롯이 필요합니다.

토토 핫 복제 슬롯은 수신기의 상태에 대해 아무것도 모른다. 다른 시간에 동일한 슬롯을 사용하여 여러 다른 수신기를 가질 수도 있습니다. 마지막 수신기가 소비를 중단했을 때부터 변경 사항을 얻을 수 있습니다. 주어진 시간에 하나의 수신기 만 슬롯에서 변경 사항을 소비 할 수 있습니다.

토토 핫 복제 슬롯은 핫 스탠드에서도 생성 될 수 있습니다. 예방하려면진공시스템 카탈로그에서 필요한 행을 제거하여hot_standby_feedback대기에 설정해야합니다. 그럼에도 불구하고 필요한 행이 제거되면 슬롯이 무효화됩니다. 기본과 대기 ​​사이의 물리적 슬롯을 사용하는 것이 좋습니다. 그렇지 않으면,hot_standby_feedback연결이 살아있는 동안에 만 작동합니다 (예 : 노드 재시작은 파괴됩니다). 그런 다음 기본은 대기에서 논리적 디코딩에 필요한 시스템 카탈로그 행을 삭제할 수 있습니다 (.catalog_xmin대기에서). 대기의 기존 논리 슬롯도 무효화됩니다.Wal_level기본의 경우Logical. 대기가 WAL 스트림의 변화를 감지하자마자 이루어집니다. 그것은 지연중인 Walsenders (있는 경우)의 경우 일부 WAL은까지 기록한다는 것을 의미합니다.Wal_level기본의 매개 변수 변경은 디코딩되지 않습니다.

논리 슬롯 생성에는 현재 실행중인 모든 트랜잭션에 대한 정보가 필요합니다. 기본 에서이 정보는 직접 사용할 수 있지만 대기에서는이 정보를 기본에서 얻어야합니다. 따라서 슬롯 생성은 1 차에서 일부 활동이 발생할 때까지 기다려야 할 수도 있습니다. 기본이 유휴 상태이면 대기에 논리 슬롯을 작성하는 데 눈에 띄는 시간이 걸릴 수 있습니다. 이것은라고 호출하여 쏟아 질 수 있습니다.pg_log_standby_snapshot기본의 함수.

주의

복제 슬롯은 충돌 전반에 걸쳐 지속되며 소비자의 상태에 대해 아무것도 모릅니다. 연결이없는 경우에도 필요한 리소스의 제거를 방지합니다. 시스템 카탈로그에서 필요한 행이나 필요한 행을 제거 할 수 없기 때문에 스토리지가 소비됩니다.진공복제 슬롯에 요구되는 한. 극단적 인 경우 거래 ID 랩 어라운드를 방지하기 위해 데이터베이스가 종료 될 수 있습니다 (참조섹션 24.1.5). 따라서 슬롯이 더 이상 필요하지 않으면 삭제해야합니다.

47.2.3. 복제 슬롯 동기화#

기본의 토토 핫 복제 슬롯은 사용하여 핫 스탠드와 동기화 될 수 있습니다Failover매개 변수pg_create_logical_replication_slot또는 사용하여Failover옵션구독 생성슬롯 생성 중에pg_sync_replication_slots대기에서. 설정sync_replication_slots대기에서 장애 조치 슬롯은 SlotSync 작업자에서 주기적으로 동기화 될 수 있습니다. 동기화가 작동하려면 기본과 대기 ​​사이에 물리적 복제 슬롯이 있어야합니다 (예 :Primary_Slot_name대기에서 구성해야합니다) 및hot_standby_feedback대기에서 활성화해야합니다. 또한 유효한 것을 지정해야합니다dbnameinPrimary_conninfo. 상기 물리적 복제 슬롯이synchronized_standby_slots가입자가 핫 스탠드보다 빠르게 변경 사항을 소비하지 못하도록 기본에 목록. 올바르게 구성 되더라도, in이라는 이름의 슬롯 대기로 인해 논리 가입자에게 변경을 보낼 때 일부 대기 시간이 예상됩니다.synchronized_standby_slots. 언제synchronized_standby_slots사용됩니다. 기본 서버는 지정된 물리적 복제 슬롯과 관련된 해당 대기까지 완전히 종료되지 않습니다.synchronized_standby_slots, 기본 서버의 최신 플러시 위치까지 WAL을 수신하는 것을 확인했습니다.

장애 조치 후 논리 복제를 재개하는 능력은에 따라 다릅니다.범퍼카 토토 PostgreSQL : 문서.Synced장애 조치시 대기의 동기화 된 슬롯의 값. 장애 조치 후에 실패 후 논리 복제에 사용하기 전에 대기 상태로 동기 상태를 달성 한 지속적인 슬롯만이 정지 상태를 달성 할 수 있습니다. 임시 동기 슬롯은 논리 디코딩에 사용될 수 없으므로 해당 슬롯의 토토 핫 복제는 재개 될 수 없습니다. 예를 들어, 비활성화 된 구독으로 인해 동기화 된 슬롯이 대기에 지속될 수없는 경우, 활성화 된 경우에도 장애 조치 후에도 구독을 재개 할 수 없습니다..

동기화 된 논리 슬롯에서 장애 조치 후 논리적 복제를 재개하려면 구독의 'Conninfo'가 변경되어 새로운 기본 서버를 가리켜 야합니다. 이것은를 사용하여 수행됩니다구독 변경 ... Connection. 대기를 홍보하기 전에 구독이 먼저 비활성화되고 연결 문자열을 변경 한 후에 다시 활성화하는 것이 좋습니다.

주의

프로모션 중에 이전 기본이 다시 올라갈 가능성이 있으며 구독이 비활성화되지 않으면 논리 가입자는 연결 문자열이 변경 될 때까지 프로모션 후에도 이전 기본 서버로부터 데이터를 계속받을 수 있습니다. 이로 인해 데이터 불일치 문제가 발생하여 논리적 가입자가 새 기본 서버에서 복제를 계속할 수 없게됩니다.

47.2.4. 출력 플러그인#

출력 플러그인은 Write-Ahead Log의 내부 표현에서 데이터를 복제 슬롯 욕구의 소비자 형식으로 변환합니다.

47.2.5. 내보낸 스냅 샷#

스트리밍 복제 인터페이스를 사용하여 새로운 복제 슬롯이 생성 될 때 (참조create_replication_slot), 스냅 샷이 내보내기 (참조섹션 9.28.5)는 데이터베이스의 상태를 정확하게 표시하여 모든 변경 사항이 변경 스트림에 포함됩니다. 이것은 사용하여 새로운 복제본을 만드는 데 사용될 수 있습니다트랜잭션 설정 스냅 샷슬롯이 생성 된 순간 데이터베이스의 상태를 읽으려면. 그런 다음이 트랜잭션을 사용하여 해당 시점에서 데이터베이스 상태를 덤프하는 데 사용될 수 있으며, 그 후에는 변경 사항을 잃지 않고 슬롯의 내용을 사용하여 업데이트 할 수 있습니다..

스냅 샷 생성이 항상 가능한 것은 아닙니다. 특히 핫 스탠드에 연결되면 실패합니다. 스냅 샷 내보내기가 필요하지 않은 응용 프로그램은와 함께이를 억제 할 수 있습니다.NOEXPORT_SNAPSHOT옵션.

정정 제출

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