MySQL Group Replication은 Row 포맷으로 하는 바이너리 로그와 GTID를 기반으로 하여 MySQL Replication 구조를 이용한 MySQL Plugin 이다. 그래서, Performance Schema와 또다른 플러그인 기능들과 통합되어 사용할 수 있다. 다음 그림은 MySQL Group Replication 전체 구조를 보여주는 그림이다.
MySQL Server 바로 아래에 위치하는 API 레이어는 MySQL Server와 Group Replication의 Plugin이 서로 소통하기 위한 레이어이다. 해당 API 레이어는 MySQL Server와 Group Replication 간의 인터페이스 역할을 수행한다. 여기서 제공하는 API를 이용하여 트랜잭션과 관련된 작업에서 사용된다. 일반적으로 서버에서는 서버를 시작하거나, 복구하거나 연결을 수락할 준비 그리고 트랜잭션을 커밋하는 등과 같은 알람이 필요한 작업에서 호출한다. Plugin에서는 서버에서 진행중인 트랜잭션을 커밋하거나 중단하도록 지시를 하는 경우나, 릴레이 로그에 트랜잭션의 정보를 밀어넣어야 하는 작업을 수행해야 할때 호출된다.
API 레이어 아래에는 해당 API를 통해 요청한 작업이 진행되어야 하는 컴포넌트 레이어가 위치해 있다. 이 레이어에는 3개의 컴포넌트가 존재한다. Capture 컴포넌트는 현재 실행하고 있는 트랜잭션과 관련된 내역을 추적하는 역할을 수행한다. Applier 컴포넌트는 Group Replication안에서 리모트에서 실행된 트랜잭션을 담당하여 다른 서버에서 실행될 수 있게 해주는 역할을 수행한다. Recovery 컴포넌트는 Donor를 선택하여 분산 복구 작업을 진행하는 역할을 수행한다.
그 아래에 위치한 Replication Protocol Logics 레이어는 일부 Replication 로직을 포함하고 있는 레이어로 충돌을 감지하고 처리하는 작업을 진행한다.
그 다음에 나오는 레이어는 Group Communication System API 레이어로 Replication된 상태 시스템을 구축하는데 필요한 속성을 추상화 하는 역할을 수행한다. 여기서 부터는 위에 파란색 영역과는 전혀 다른 역할의 레이어이다 초록색 으로 표시된 부분은 Group Replication 안에서 서로간의 정보를 주고받는데 필요한 메세징 관련 레이어 이기 때문이다. 즉 앞부분은 각 서버에 설치된 MySQL과 Group Replication 플러그인 사이의 작업에 관련된 영역이었고, 초록색은 구성 서버들간의 통신과 관련된 영역이다.
그리고 그 작업을 위해 MySQL Group Replication Plugin은 Paxos 기반 그룹 통신 엔진을 구현하여 포함하고 있다.
'MySQL HA & DR > Group Replication' 카테고리의 다른 글
9.3 Data Manipulation Statements (0) | 2017.03.29 |
---|---|
9.2 The Group (0) | 2017.03.29 |
7. Requirements and Limitations (0) | 2017.03.28 |
6. Group Replication System Variables (0) | 2017.03.23 |
5. Group Replication Security (0) | 2017.03.21 |