programing

Galera 노드가 떨어지면 커밋에서 '잠금을 시도할 때 데드락 발견

mailnote 2023. 9. 28. 08:39
반응형

Galera 노드가 떨어지면 커밋에서 '잠금을 시도할 때 데드락 발견

최근에 WAN Galera 클러스터의 다른 노드에 연결 문제가 발생하는 동안 COMIT를 실행할 때 '잠금을 시도할 때 발견된 데드락'이 표시됩니다(사실상 COMIT와 동시에).이 특정 상황에서는 자동 증가 PK, FK 및 기타 고유한 제약 조건이 없는 단일 테이블에 데이터를 삽입합니다.로깅에 따르면 COMIT를 실행하는 노드가 다른 노드에 문제가 발생했음을 아직 인식하지 못했습니다( 교착 상태 예외가 발생한 후 클러스터 크기가 아직 변경되지 않음).처음에 저는 이 오류가 클러스터 크기가 변경될 때 auto_increment_increment_offset 값이 변경되어 PK 충돌이 발생하는 것과 관련이 있다고 생각했기 때문에 Galera에서 해당 값을 전혀 관리하지 않도록 구성하고 클러스터 전체에 적절한 값을 수동으로 설정하여 문제를 단순화하려고 했습니다.그렇다고 문제가 해결되지는 않았습니다.Galera 문서에 따르면 커밋 노드는 트랜잭션이 클러스터의 다른 노드에 문제를 일으키지 않는지 확인하는 것처럼 들립니다.제 auto_increment_* 구성에 따르면 auto_increment id가 충돌하면 안 된다는 것을 알고 있으므로 커밋 노드가 최근 매우 일시적으로(< 1 min) 오프라인 상태가 된 노드를 포함한 모든 노드와의 거래 상태를 확인하려고 시도하고 있다고 가정합니다.그리고 현재 문제가 발생한 노드로부터 응답을 얻을 수 없기 때문에 트랜잭션을 거부합니다.

저는 갈레라(8개월)를 비교적 처음 접했고 노련한 갈레라 베테랑이 이 상황을 처리하는 가장 좋은 방법에 대한 조언을 해주기를 바랐습니다."거래 재시도"라는 접근 방식은 알고 있지만, 이는 약간의 해킹으로 느껴집니다. 그리고 이 특정 문제의 근본적인 원인에 대해 다른 해결책이나 최소한 몇 가지 추가 정보가 있기를 바랍니다.

감사해요.

언급URL : https://stackoverflow.com/questions/53757739/galera-deadlock-found-when-trying-to-get-lock-on-commit-when-a-node-drops

반응형