본문 바로가기

강의 목록342

9.5 Distributed Recovery 1. Group Replication Basics Group Replication의 분산 복구 프로세스는 그룹안에서 현재 발생중인 이벤트를 모니터링 하면서 그룹안의 온라인 서버에서 맞춰야 하는 데이터를 가져와서 구성하는 절차로 요약해서 이야기 할 수 있다. 즉, 복구 프로세스를 진행하는 중에 서버는 해당 구성원들이 실행하는 이벤트들에 대한 정보를 수신하여 대기시킨다. 그 다음 어떻게 진행되는지는 좀 더 자세히 다음 내용에서 설명하도록 한다. 1.1 Phase 1가장 먼저 Joiner 는 가입하려는 그룹안에서 온라인 상태에 있는 서버 한대를 선택하여 Donor로 설정한다. Donor는 Joiner가 가입한 순간부터 가지고 있지 않은 데이터를 전달하는 역할을 수행한다. 이 작업은 두 서버간에 표준 비동기 R.. 2017. 4. 5.
9.4 Data Definition Statements 일반적으로 DDL 이라고 하는 데이터 정의문은 실행할때 주의해야 한다. MySQL 에서 DDL은 트랜잭션 안에서 실행되더라도 롤백이 되지 않기 때문이다. 즉, 롤백되지 않은 작업이기 때문에 Group Replication에서 DDL을 함부로 실행하는 것은 위험하다. 그래서, DDL 구문을 실행할 때에는 좀 더 주의를 기울여서 진행해야 한다. 그리고 스키마 변경 작업이 완료되지 않은 동안에는 해당 테이블에 대한 DML도 같은 서버에서 진행되게 해야 한다. 그렇지 않으면, 데이터가 깨질 가능성이 높다. 즉, 단일 기본 모드로 운영중일 때에는 크게 문제가 되지 않는 사항이다. 2017. 4. 5.
9.3 Data Manipulation Statements Group Replication안에서 Primary 서버가 지정되어있지 않으면, 그룹내의 어떤 서버에서도 RW 트랜잭션을 실행할 수 있다. 모든 서버는 사전에 조정없이 트랜잭션을 실행할 수 있다. 각각 서버에서 실행되는 트랜잭션은 커밋할 때, 그룹 내의 나머지 서버와 조정되어 커밋여부를 결정하기 때문이다. 이때 다음과 같은 사항을 체크한다. -- 해당 작업이 커밋되어야 하는지 여부-- 다른 서버가 트랜잭션을 적용할 수 있도록 변경 사항을 전파 각 트랜잭션은 원자성을 띈 boradcast로 전송되기 때문에 모든 그룹에서 실행되거나 실패하게 된다. 수신한 트랜잭션은 모든 서버에서 동일한 순서로 실행된다. 충돌 감지는 트랜잭션의 쓰기 내용을 검사하고 비교하면서 작업을 진행한다. 해당 체크 작업은 행단위에서 이.. 2017. 3. 29.
9.2 The Group MySQL Group Replication에서는 서버의 모음이 하나의 그룹을 형성한다. 하나의 그룹에는 이름이 부여되는데 그것은 UUID형태로 지정된다. 하나의 그룹은 동적이며 서버는 동적으로 투입되고 제거될 수 있다. 이건 자발적일수도 있고, 비자발적일수도 있다. 그리고 해당 투입과 제거는 자동으로 조정된다. 하나의 서버가 Group Replication에 투입되면 기존 서버에서 누적된 데이터 정보를 가져와서 자동으로 최신 상태가 되도록 작업한다. 이 작업은 비동기 MySQL Replication을 이용하여 진행된다. 그리고, 만약 그룹에 투입된 서버중 하나가 자동으로 제거된다면 나머지 서버들은 자동으로 해당 서버가 제거된것을 알게 된다. 2017. 3. 29.