논리 디코딩은 데이터베이스 테이블의 모든 지속적인 변경 사항을 데이터베이스의 내부 상태에 대한 자세한 지식없이 해석 할 수있는 일관성 있고 이해하기 쉬운 형식으로 추출하는 과정입니다.
inPostgreSQL, 논리 디코딩은의 내용을 디코딩하여 구현됩니다.메이저 토토 사이트 : 문서 : 13 : 29 장. 신뢰성과 쓰기 로그는 스토리지 수준의 변경 사항을 튜플 스트림 또는 SQL 문과 같은 응용 프로그램 별 형태로 설명하는 9915_10041 |
롤 토토 복제의 맥락에서 슬롯은 원래 서버에서 작성된 순서대로 클라이언트에게 재생할 수있는 변경 스트림을 나타냅니다. 각 슬롯은 단일 데이터베이스에서 일련의 변경을 스트리밍합니다.
PostgreSQL스트리밍 복제 슬롯도 있습니다 (참조섹션 26.2.5), 그러나 그것들은 다소 다르게 사용됩니다.
복제 슬롯에는 a의 모든 데이터베이스에서 고유 한 식별자가 있습니다.postgresql클러스터. 슬롯은 그것들을 사용하여 연결과 독립적으로 지속되며 충돌 안전입니다.
논리 슬롯은 정상 작동에서 각 변경 사항을 한 번만 방출합니다. 각 슬롯의 현재 위치는 체크 포인트에서만 유지되므로 충돌의 경우 슬롯이 이전 LSN으로 돌아올 수 있으므로 서버가 다시 시작될 때 최근 변경 사항이 다시 전송됩니다. 논리적 디코딩 클라이언트는 동일한 메시지를 두 번 이상 처리하여 악영향을 미치지 않습니다. 클라이언트는 디코딩 할 때 본 마지막 LSN을 기록하고 반복 된 데이터를 건너 뛰거나 (복제 프로토콜을 사용할 때) 서버가 시작점을 결정하게하기보다는 해당 LSN에서 디코딩을 요청하도록 요청할 수 있습니다. 복제 진행 추적 기능은이 목적을 위해 설계되었습니다. 참조PostgreSQL : 문서 : 13 : 49 장 토토 커뮤니티 진행 추적.
단일 데이터베이스에는 다중 독립 슬롯이 존재할 수 있습니다. 각 슬롯에는 자체 상태가있어 다른 소비자가 데이터베이스 변경 스트림에서 다른 지점에서 변경 사항을받을 수 있습니다. 대부분의 응용 분야의 경우 각 소비자에게 별도의 슬롯이 필요합니다.
롤 토토 복제 슬롯은 수신기의 상태에 대해 아무것도 모른다. 다른 시간에 동일한 슬롯을 사용하여 여러 다른 수신기를 가질 수도 있습니다. 마지막 수신기가 소비를 중단했을 때부터 변경 사항을 얻을 수 있습니다. 주어진 시간에 하나의 수신기 만 슬롯에서 변경 사항을 소비 할 수 있습니다.
복제 슬롯은 충돌에 걸쳐 지속되며 소비자의 상태에 대해 아무것도 모릅니다. 연결이없는 경우에도 필요한 리소스의 제거를 방지합니다. 시스템 카탈로그에서 필요한 행이나 필요한 행을 제거 할 수 없기 때문에 스토리지가 소비됩니다.진공
복제 슬롯에 요구되는 한. 극단적 인 경우 거래 ID 랩 어라운드를 방지하기 위해 데이터베이스가 종료 될 수 있습니다 (참조섹션 24.1.5). 따라서 슬롯이 더 이상 필요하지 않으면 삭제해야합니다.
출력 플러그인은 Write-Ahead Log의 내부 표현에서 데이터를 복제 슬롯 욕구의 소비자 형식으로 변환합니다..
스트리밍 복제 인터페이스를 사용하여 새 복제 슬롯이 생성 될 때 (참조create_replication_slot), 스냅 샷이 내보내기 (참조섹션 9.27.5)는 데이터베이스의 상태를 정확하게 표시하여 모든 변경 사항이 변경 스트림에 포함됩니다. 이것은 사용하여 새로운 복제본을 만드는 데 사용될 수 있습니다트랜잭션 설정 스냅 샷
슬롯이 생성 된 순간 데이터베이스 상태를 읽으려면. 그런 다음이 트랜잭션을 사용하여 해당 시점에서 데이터베이스 상태를 덤프하는 데 사용될 수 있으며, 그 후에는 변경 사항을 잃지 않고 슬롯의 내용을 사용하여 업데이트 할 수 있습니다..
스냅 샷 내보내기가 필요없는 응용 프로그램은와 함께이를 억제 할 수 있습니다.NOEXPORT_SNAPSHOT
옵션.
문서에 올바르지 않은 내용이 있으면 일치하지 않습니다. 특정 기능에 대한 귀하의 경험 또는 추가 설명이 필요합니다. 사용이 양식문서 문제를보고하려면