본문 바로가기

MySQL HA & DR28

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.
9.1 Group Replication Plugin Architecture 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를 이용하여 트랜잭션과 관련된 작업에서 사용.. 2017. 3. 28.
7. Requirements and Limitations 1. Group Replication Requirements Group Replication에 사용할 서버 인스턴스는 다음의 요구 사항을 따라야 한다. 1.1 구조 1.1.1. InnoDB Storage Engine 데이터는 InnoDB 스토리지 엔진으로 만든 테이블에 저장해야 한다. 트랜잭션으로 데이터가 저장되어야 충돌에 대한 검사를 할 수 있다. 만약, 트랜잭션 간의 충돌이 있는 경우 그룹 전체에 일관성을 유지하기 위해 일부 트랜잭션을 롤백하기도 한다. 그래서, 트랜잭션을 지원하는 스토리지 엔진을 사용하여 데이터를 저장해야 한다. 또한, InnoDB는 Group Replication에서 동작할 때 트랜잭션 충돌을 잘 처리할 수 있는 몇가지 기능을 제공한다. 1.1.2 Primary KeysGroup .. 2017. 3. 28.