2017-05-06 12 views
1

우리는 MariaDB Galera 클러스터를 우리 애플리케이션에 대해 평가하는 중입니다. 내가 이해하는 바와 같이, 클러스터는 행 레벨과 문장 레벨의 복제를 지원합니다. 우리는 행 레벨 복제에 기대고 있습니다. 우리의 데이터 모델은 서로 관련된 여러 엔티티를 가지고 있습니다. 우리는 엔티티들간에 외래 키 관계를 가질 것입니다.MariaDB Galera Cluster 참조 무결성 제한

클러스터가 다음 시나리오를 처리하는 방법을 행 기반 복제와 함께 사용한다면 이해하고 싶습니다.

1

이> 클러스터는 3 개 노드

2
있다> 클래스 및 학생 등의 단체가있다. 이러한면에서 우리는 외래 키 학생이 -> 클래스

3> 우리는 수 개의 노드 (N1 & N2) 시간 t1에서 두 개의 서로 다른 거래

A)에서 두 개의 별도의 업데이트를 얻을 : 노드 N1 가져 특정 클래스 c1 및 c2 각각에 대해 학생 (s1 및 s2)에 대한 삽입 시간 t2에서

B) 클래스 (C1)는 시간 t3에서의 노드 N2

C)에서 삭제 얻는다 : 변경 (학생 S1 첨가 및 S2)
N2 에 N1에서 밀리

학생 추가와 관련된 모든 거래가 롤백 되나요?

답변

2

RBR .

COMMIT의 경우 오류를 확인해야합니다. 충돌이 다른 노드와 검사되는 시간입니다.

즉, 하나의 노드는 충돌이 없을 수 있습니다 (COMMIT에서). 다른 노드에서 동시에 발생한 상황과 충돌 할 것입니다. 일반적으로 Galera tips

더, 당신은 "교착 상태"를 얻을 때마다, 단순히 전체 트랜잭션을 다시 실행하십시오. 아마도 두 번째로 작동하거나 원격 트랜잭션이 현재 노드를 만들었으므로 다른 오류가 발생할 수 있습니다.