본문 바로가기
MySQL HA & DR/Group Replication

9.3 Data Manipulation Statements

by 모모레 2017. 3. 29.

Group Replication안에서 Primary 서버가 지정되어있지 않으면, 그룹내의 어떤 서버에서도 RW 트랜잭션을 실행할 수 있다. 


모든 서버는 사전에 조정없이 트랜잭션을 실행할 수 있다. 각각 서버에서 실행되는 트랜잭션은 커밋할 때, 그룹 내의 나머지 서버와 조정되어 커밋여부를 결정하기 때문이다. 이때 다음과 같은 사항을 체크한다. 


-- 해당 작업이 커밋되어야 하는지 여부

-- 다른 서버가 트랜잭션을 적용할 수 있도록 변경 사항을 전파 


각 트랜잭션은 원자성을 띈 boradcast로 전송되기 때문에 모든 그룹에서 실행되거나 실패하게 된다. 수신한 트랜잭션은 모든 서버에서 동일한 순서로 실행된다. 충돌 감지는 트랜잭션의 쓰기 내용을 검사하고 비교하면서 작업을 진행한다. 해당 체크 작업은 행단위에서 이루어 진다. 만약 충돌이 발생한다면, 먼저 커밋한 것을 기준으로 승자를 결정한다. 즉, t1과 t2가 다른 사이트에서 동시에 실행되면 t2가 t1 이전에 정렬되고 둘 다 동일한 행을 변경 했으므로 t2가 충돌을 얻고 t1이 중단됩니다. 즉, t1은 t2가 진행한 작업을 기반으로 다시 작업을 진행하기를 시도하게 된다. 


두 트랜잭션이 자주 충돌하는 경우에는 동일한 서버에서 트랜잭션을 시작하는 것이 좋습니다. 그렇게 하면,  Replication 프로토콜에서 해당 작업을 처리하는게 아니라 각 서버의 로컬 관리자를 통해 해당 작업이 동기화 되어 처리된다. 



'MySQL HA & DR > Group Replication' 카테고리의 다른 글

9.5 Distributed Recovery  (0) 2017.04.05
9.4 Data Definition Statements  (0) 2017.04.05
9.2 The Group  (0) 2017.03.29
9.1 Group Replication Plugin Architecture  (0) 2017.03.28
7. Requirements and Limitations  (0) 2017.03.28