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

3. Monitoring Group Replication

by 모모레 2017. 3. 13.

Performance Schema 의 테이블을 이용하면 Group Replication을 모니터링을 할 수 있다. 모니터링을 하기 위해 다음과 같은 테이블들이 생성된다. 


-- performance_schema.replication_group_member_stats

-- performance_schema.replication_group_members


기존에 존재하던 리플리케이션 관련 테이블에도 Group Replication을 위한 모니터링에 사용할 수 있다. 


-- performance_schema.replication_connection_status

-- performance_schema.replication_applier_status


Group Replication에서 사용하는 Replication channel은 다음과 같은 이름으로 생성된다. 


-- group_replication_recovery : 이 채널은 분산 복구 프로세스를 진행할때 사용하는 채널이다. 

-- group_replication_applier : 그룹안에서 변경내역을 받아 올때 사용하는 채널이다. 이 채널은 그룹안에서 실행된 트랜잭션의 정보를 바로 받아오는 채널이다. 


1. Replication_group_member_stats


리플리케이션안의 각 멤버들은 그룹에 의해 커밋된 트랜잭션을 인증하고 적용한다. 이때 사용하는 certifier , applier 프로스듀어들이 생성해 내는 통계자료들은 각각의 작업이 얼마나 일어났고, 얼만큼 진행되었는지 확인하기에 유용하다. 해당 테이블들 중 performance_schema.replication_group_member_stats 는 certification 프로세스가 얼만큼 작업했고, 어떻게 작업했는지 중요한 정보들을 제공한다. 


performance_schema.replication_group_member_stats의 각 컬럼별 정보는 다음과 같다. 


 컬럼 

 설명

 Channel_name

 Group Replication 채널의 이름

 Member_id

 현재 연결된 멤버 서버의 UUID를 의미한다. 그룹안에서 해당 값은 멤버서버들이 모두 다른 값을 가진다. 해당 값이 각 멤버를 가리키는 키가 된다. 

 Count_Transactions_in_queue

 충돌이 감지되어 중지 중인 큐에 저장된 트랜잭션의 수. 한번 충돌이 감지되면, 그리고 체크되어 한번 패스 하게 되면 그 트랜잭션은 큐에 쌓여서 적용되기를 기다린다. 

 Count_transactions_checked

 충돌이 확인된 트랜잭션의 수 

 Count_conflicts_detected

 충돌 감지 체크를 통과하지 못한 트랜잭션의 수. 

 Count_transactions_validating

 충돌 감지 데이터 베이스의 현재 사이즈(각 트랜잭션들은 인증까지는 완료된 상태에서)

 Transactions_committed_all_members

 현재 view에서 모든 멤버 서버들에서 성공적으로 커밋된 트랜잭션을 보여준다. 해당 정보는 주기적으로 갱신된다. 

 Last_conflict_free_transaction

 가장 최근에 확인된 충돌없이 처리된 트랜잭션의 식별자 정보 


해당 정보들은 MySQL Group 안의 멤버들의 실행 성능을 확인하기에 좋은 정보들이다. 예를 들어, 하나의 멤버가 최신 상태를 유지할 수 없다고 한다면, 대기열에 많은 수의 트랜잭션이 표시될 것이다. 이 정보를 기반으로 그룹에서 구성원을 제거하거나 그룹의 다른 구성원에 대한 트랜잭션 처리를 지연하여 대기 중인 트랜잭션 수를 줄일 수 있다. 또한 이 정보를 사용하여 Group Replication 플러그인의 흐름 제어를 조정하는 방법을 결정하는데 도움을 줄 수 있다. 


2. Replication_group_members


해당 테이블은 Current View에서 추적되는 다른 서버 인스턴스의 상태를 모니터링 하는데 사용된다. 

컬럼 

 설명

 Channel_name

 Group Replication channel 의 이름. 

 Member_id

 멤버 서버의 UUID

 Member_host

 각 멤버의 Network 주소

 Member_port

 각 멤버들이 사용하는 포트 

 Member_state

 각 멤버들의 현재 상태 ( ONLINE, ERROR, RECOVERING, OFFLINE, UNREACHABLE 중 하나의 값이 보여지게 된다. )



3. Replication_connection_status


Group에 연결되어 있을 때, 이 테이블의 몇몇 컬럼들은 Group Replication과 관련된 정보를 보여준다. 예를 들어, Group에서 수신되어 Applier Queue에 대기중인 트랜잭션 정보를 확인할 수 있다. 


컬럼  

 설명

 Channel_name

 Group Replication channel 의 이름. 

 Group_name

 그룹의 이름을 보여준다. 이 값은 항상 유효한 UUID이다. 

 Source_UUID

 그룹의 식별자를 보여준다. 그룹 이름과 유사하며 그룹 복제중에 생성된 모든 트랜잭션의 UUID로 사용된다. 

 Service_state

 구성원이 그룹에 속해있는지를 보여준다. 가능한 값으로는 ON, OFF CONNECTING이 있다. 

 Received_transaction_set

 그룹안의 멤버에 의해 받아진 GTID set 안의 트랜잭션 정보를 보여준다.


4. Replication_applier_status


이 테이블을 사용하여 Group Replication 에 관련된 채널 및 스레드의 상태를 확인할 수 있다. 트랜잭션을 적용하는 worker 스레드가 많으면 worker 테이블을 사용하여 각 worker 스레드가 수행중인 작업을 모니터링 할 수 있다. 


 컬럼

설명 

 Channel_name

 Group Replication channel 의 이름. 

 Service_state

 Applier 서비스의 상태를 보여준다. ( ON, OFF)

 Remaining_delay

 Applier가 지연되고 있는지 정보를 확인할 수 있다. 

 Count_transactions_retries

 트랜잭션을 적용하는 동안 수행된 재시도 횟수 

 Received_transaction_set

 그룹안의 멤버에 의해 받아진 GTID set 안의 트랜잭션 정보를 보여준다.



5. Group Replication Server States


Replication_group_members 테이블은 View 변경이 있을때 마다 수정된다. ( 예를 들어, 그룹 구성이 동적으로 변경되는경우 그러하다.) 이 시점에서 서버는 일부 메터 정보를 교환하여 동기화를 계속하고 협력을 계속한다. 


각 서버들은 운영중에 다양한 상태를 가질 수 있다. 서버가 제대로 통신 중인 경우에는 모든 서버가 모든 서버에 대해 동일한 상태를 보여준다. 그러나, 네트워크 파티션이 있거나 서버가 그룹을 뗘날 경우에는 서버에 따라 각 서버의 정보가 다르게 될 수도 있다. 서버가 그룹에서 떠난 경우에는 해당 정보를 정확히 변경할 수 있게 전달해 줄 수가 없다. 그래서 서버가 서로 서로 조정할 수 없다. 따라서 다른 서버들의 상태를 추측할 수도 있다. 따라서 상태를 추측하지 않고 대신 일부 서버에 도달 할 수 없다고 보고한다. 



상태 정보 

 설명

 그룹 동기화 

 ONLINE

 각 구성원은 그룹내에서 구성원으로 충분히 작업할 준비가 되어있는 상태이다. 즉 각자 트랜잭션을 실행할 수 있는 상태이다. 

 YES

 RECOVERING

 서버가 멤버가 되기위해 복구 작업을 진행하고 있는 상태이다. 

 NO

 OFFLINE

 플러그인은 로드 되었지만, 어디에도 속하지 않은 상태이다. 

 NO

 ERROR

 복구 단계에서 오류가 발생했거나 변경 사항 적용중에 문제가 발생한 상태를 말한다. 

 NO

 UNREACHABLE

 로컬 장애 감지기가 특정 서버에 도달할 수 없다고 의심할 때 이와 같이 표시된다. 서버가 비정상적이거나 연결이 자주 끊어질 때에도 해당 정보로 표시된다. 

 NO


Group Replication은 동기식은 아니지만 어찌보면 동기식이다. 정확하게 설명하면, 트랜잭션이 모두 동일한 순서대로 실행되는 것은 보장되지만, 항상  모든 멤버에 동시에 실행되는 것은 아니다. 실행 시간은 각 서버들의 리소스 상태에 따라 결정된다. 





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

6. Group Replication System Variables  (0) 2017.03.23
5. Group Replication Security  (0) 2017.03.21
4. Group Replication Operations  (0) 2017.03.15
2. Getting Started  (0) 2017.02.28
1. Group Replication Background  (0) 2017.02.22