이 문서는 지원되지 않는 버전의 PostgreSQL을위한 것입니다.
당신은에 대해 같은 페이지를 볼 수 와이즈 토토스포츠 토토 PostgreSQL : 문서 : 17 : 29.6. 갈등버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

29.7. 갈등#

논리적 복제는 가입자 노드에서 로컬로 변경 되더라도 데이터가 업데이트 될 것이라는 점에서 일반 DML 작업과 유사하게 동작합니다. 들어오는 데이터가 제약을 위반하면 복제가 중지됩니다. 이것은 A라고합니다.갈등. 복제 할 때업데이트또는삭제운영, 누락 된 데이터도로 간주됩니다.갈등, 그러나 오류가 발생하지 않으며 그러한 작업이 단순히 건너 뜁니다.

추가 로깅이 트리거되고 충돌 통계가 수집됩니다 (pg_stat_subscription_stats보기) 다음의갈등케이스 :

insert_exists #

a를 위반하는 행 삽입연기가 없음고유 한 제약 조건. 원점을 기록하고 충돌 키의 타임 스탬프 세부 정보를 커밋하려면track_commit_timestamp가입자에서 활성화해야합니다. 이 경우 충돌이 수동으로 해결 될 때까지 오류가 발생합니다.

update_origin_differs #

이전에 다른 원점에 의해 이전에 수정 된 행을 업데이트합니다. 이 충돌은 일 때만 감지 될 수 있습니다.track_commit_timestamp가입자에서 활성화되어 있습니다. 현재 업데이트는 로컬 행의 원점에 관계없이 항상 적용됩니다.

update_exists #

행의 업데이트 된 값은 a를 위반합니다.연기가되지 않음고유 한 제약 조건. 원점을 기록하고 충돌 키의 타임 스탬프 세부 정보를 커밋하려면track_commit_timestamp가입자에서 활성화해야합니다. 이 경우 충돌이 수동으로 해결 될 때까지 오류가 발생합니다. 파티션 된 테이블을 업데이트 할 때 업데이트 된 행 값이 다른 파티션 제약 조건을 충족시켜 행이 새 파티션에 삽입되도록합니다.insert_exists새 행이 a를 위반하는 경우 갈등이 발생할 수 있습니다.연기가되지 않음고유 한 제약 조건.

update_missing #

업데이트 할 튜플은 찾을 수 없었습니다. 이 시나리오에서는 업데이트가 단순히 건너 뜁니다.

delete_origin_differs #

다른 원점에 의해 이전에 수정 된 행을 삭제합니다. 이 충돌은 일 때만 감지 될 수 있습니다.track_commit_timestamp가입자에서 활성화되어 있습니다. 현재 삭제는 로컬 행의 원점에 관계없이 항상 적용됩니다.

delete_missing #

삭제할 튜플은 찾을 수 없었습니다. 삭제는이 시나리오에서 단순히 건너 뜁니다.

multiple_unique_conflicts #

행을 삽입하거나 업데이트하면 여러 차례 위반연기가되지 않음고유 한 제약. 원점을 기록하고 충돌하는 키의 타임 스탬프 세부 정보를 제공하려면track_commit_timestamp가입자에서 활성화되어 와이즈 토토. 이 경우 충돌이 수동으로 해결 될 때까지 오류가 발생합니다.

제외 제약 위반과 같은 다른 충돌 시나리오가 와이즈 토토. 현재 로그에 추가 세부 정보를 제공하지 않습니다.

논리 복제 충돌의 로그 형식은 다음과 같습니다.

로그 : 관계에 대한 갈등 "Schemaname.TableName": Conflict =COLLICT_TYPE세부 사항 :Detail_Explanation.detail_values[; ...].여기서detail_values중 하나입니다.

    (column_name[, ...]) = (column_value[, ...])기존 지역 튜플[(column_name[, ...]) =] (column_value[, ...])원격 튜플[(column_name[, ...]) =] (column_value[, ...])복제 아이덴티티(column_name[, ...]) = (column_value[, ...]) | 가득한 [(column_name[, ...]) =] (column_value[, ...])

로그는 다음 정보를 제공합니다.

log
  • Schemaname.TableName갈등과 관련된 지역 관계를 식별합니다.

  • COLLICT_TYPE발생한 갈등 유형입니다 (예 :insert_exists, update_exists).

세부 사항
  • Detail_Explanation기존 로컬 튜플을 수정 한 트랜잭션의 원점, 트랜잭션 ID 및 커밋 타임 스탬프가 포함되어 와이즈 토토.

  • the섹션에는 고유 한 제약 조건을 위반 한 로컬 튜플의 주요 값이 포함되어 와이즈 토토.insert_exists, update_exists또는multiple_unique_conflicts갈등.

  • the기존 지역 튜플섹션은 원격 튜플과 다른 경우 로컬 튜플이 포함되어 있습니다.update_origin_differs또는delete_origin_differs충돌 또는 키 값이 원격 튜플과 충돌하는 경우insert_exists, update_exists또는multiple_unique_conflicts갈등.

  • the원격 튜플섹션에는 충돌을 일으킨 원격 삽입 또는 업데이트 작업의 새 튜플이 포함되어 있습니다. 업데이트 작업의 경우 값이 변하지 않고 구운 경우 새 튜플의 열 값이 무효화됩니다.

  • the복제 아이덴티티섹션에는 업데이트 또는 삭제할 기존 로컬 튜플을 검색하는 데 사용 된 복제 아이덴티티 키 값이 포함되어 있습니다. 로컬 관계에 표시되는 경우 전체 튜플 값이 포함될 수 있습니다.복제 아이덴티티 전체.

  • column_name열 이름입니다. 을 위한기존 지역 튜플, 원격 튜플복제 아이덴티티 전체케이스, 열 이름은 사용자가 테이블의 모든 열에 액세스 할 권한이 부족한 경우에만 기록됩니다. 열 이름이 있으면 해당 열 값과 동일한 순서로 나타납니다.

  • column_value는 열 값입니다. 큰 열 값은 64 바이트로 잘립니다.

  • 의 경우multiple_unique_conflicts갈등, 다중Detailed_Explanationanddetail_values라인이 생성되며, 각각 고유 한 고유 한 제약과 관련된 충돌 정보를 자세히 설명합니다.

논리 복제 작업은 구독을 소유 한 역할의 권한으로 수행됩니다. 대상 테이블의 권한 실패는 활성화 된대로 복제 충돌을 일으 킵니다PostgreSQL : 문서 : 18 : 5.9. 보안 무지개 토토 행구독 소유자가 대상이되는 대상 테이블에서 정책이 일반적으로 거부할지 여부에 관계없이삽입, 업데이트, 삭제또는19899_19909복제 중입니다. 로드 레벨 보안에 대한이 제한은 향후에서 해제 될 수 와이즈 토토.PostgreSQL.

오류를 일으키는 충돌은 복제를 중지합니다. 사용자가 수동으로 해결해야합니다. 충돌에 대한 자세한 내용은 가입자의 서버 로그에서 찾을 수 와이즈 토토.

해상도는 가입자에 대한 데이터 또는 권한을 변경하여 들어오는 변경과 충돌하지 않도록하거나 기존 데이터와 충돌하는 트랜잭션을 건너 뛰면 수행 할 수 있습니다. 충돌이 오류가 발생하면 복제가 진행되지 않으며 논리적 복제 작업자는 가입자의 서버 로그에 다음과 같은 메시지를 방출합니다.

오류 : "public.test"관계에서 감지 된 충돌 : 충돌 = insert_exists
세부 사항 : 키는 이미 고유 한 인덱스 "T_PKEY"로 존재하며, 2024-06-26 10 : 47 : 04.727375+08에서 트랜잭션 740에서 로컬로 수정되었습니다.
키 (c) = (1); 기존 지역 튜플 (1, 'local'); 원격 튜플 (1, '원격').
컨텍스트 : 복제 원본 원격 데이터 처리 "PG_16395"복제 대상 관계 "public.test"에 "삽입"중 "PG_16395"트랜잭션 725에서 0/14C0378에서 완료되었습니다

제약 조건을 위반하는 변경 사항을 포함하는 트랜잭션의 LSN과 복제 원점 이름은 서버 로그 (LSN 0/14C0378 및 복제 원본에서 찾을 수 와이즈 토토.PG_16395위의 경우). 충돌을 일으킨 거래는 사용하여 건너 뛸 수 있습니다구독 변경 ... skip마무리 LSN (즉, LSN 0/14C0378). 마무리 LSN은 트랜잭션이 게시자에게 커밋되거나 준비되는 LSN 일 수 있습니다. 또는 거래를로 호출하여 거래를 건너 뛸 수도 있습니다.pg_replication_origin_advance ()함수. 이 기능을 사용하기 전에 구독은에 의해 일시적으로 비활성화되어야합니다.구독 변경 ... 비활성화또는 가입은와 함께 사용할 수 있습니다.disable_on_error옵션. 그런 다음 사용할 수 와이즈 토토pg_replication_origin_advance ()node_name(예 :PG_16395) 및 마무리 LSN의 다음 LSN (즉, 0/14C0379). 기원의 현재 위치는에서 볼 수 있습니다.시스템보기. 전체 트랜잭션을 건너 뛰는 데는 제약 조건을 위반하지 않을 수있는 변경 사항을 건너 뛰는 것이 포함됩니다. 이것은 가입자를 쉽게 일치하지 않을 수 있습니다. 원산지 및 커밋 타임 스탬프와 같은 충돌 행에 대한 추가 세부 사항은에서 볼 수 있습니다.세부 사항로그의 선. 그러나이 정보는에만 사용할 수 와이즈 토토.track_commit_timestamp가입자에서 활성화되어 와이즈 토토. 사용자는이 정보를 사용하여 로컬 변경을 유지할지 여부를 결정하거나 원격 변경을 채택 할 수 와이즈 토토. 예를 들어,세부 사항위 로그의 선은 기존 행이 로컬로 수정되었음을 나타냅니다. 사용자는 수동으로 원격 변화를 수행 할 수 와이즈 토토.

언제스트리밍모드는병렬, 실패한 트랜잭션의 마무리 LSN은 기록되지 않을 수 있습니다. 이 경우 스트리밍 모드를로 변경해야 할 수도 있습니다.on또는OFF그리고 실패한 트랜잭션의 마무리 LSN이 서버 로그에 기록됩니다. 마무리 LSN 사용은 참조하십시오.메이저 토토 사이트 PostgreSQL.