MGR 전체 구조 및 특성
단일 마스터
하나 개의 노드가 작성 읽을 수있다
다중 마스터
각 노드는 읽고 쓸 수있다
개념은 포함한다 :
그룹 통신 시스템 (GCS)
writeset
회원
각종 인증서 정보
제어 흐름 통계
paxos
MGR 일관성을 향상 읽기
group_replication_consistency (8.0.14 引入)
최종 : 기본
전 : 큐에서 대기하는 완료된 모든 트랜잭션을 수행하는
BEFORE_ON_PRIMARY_FAILOVER는 : 트랜잭션 큐를 실행 한 후 새로운 차를 기다리는
AFTER : 모든 다른 노드에서 데이터 변경을 기다리는 것은 모두 적용되었습니다
이전과 이후:
MGR 제한
만 InnoDB의 지원, 당신은 차 건강이 있어야합니다
바이너리 로그 형식 : 행, 가까운 바이너리 로그 검사
그것은 켜져 있어야 GTID
트랜잭션 격리 수준 : COMMITTED (틈 잠금)을 읽을
대형 거래 한도 : group_replication_transaction_size_limit
멀티 마스터 모드 : 같은 테이블에 동시에 DDL / DML에있는 다른 노드를 피하기 위해
최대 클러스터 노드 9 (홀수)
데이터를 동기화하는 방법 MGR 데이터
MGR 데이터 복제 -> 서비스 인증
서비스 인증
충돌 감지
키 certification_info : xxhash64 (값 인덱스 이름 + DB + DB 이름 테이블 이름 + 길이 + 길이 + 길이 + 값 고유의 각 열을 구성하는 테이블 이름 지수) gtid_executed 트랜잭션의 가치입니다
트랜잭션 할당 gtid
group_replication_gtid_assignment_block_size
제출 된 분기 (그룹 커밋)
MGR 데이터 복제 충돌 해결
문제 :
이 시스템은 점점 더 크고 성능이 악화 될 것이기 centification_info 이야기에 쓸 것인가?
접근 :
청소 메커니즘의 도입 centification_info
복사 데이터 흐름 제어 MGR
흐름 제어
제어 목적으로 흐름
클러스터 지연 (읽기 전용 트랜잭션은 흐름 제어 범위 내에 있지 않은) 것을 보장하도록 제어
흐름 제어 이유
각 노드 일관성 성능
버킷 짧은 보드 효과
매개 변수
group_replication_flow_control_mode 기본값 : 할당량 개방 흐름 제어
초 : 제어 통계, 단위 흐름을 얼마나 자주 group_replication_flow_control_period
단지 노드 흐름 제어를 트리거보다 더 축적 얼마나 많은 거래 인증을 group_replication_flow_control_applier_threshold & group_replication_flow_control_certifier_threshold 업무 인증 큐
MGR 모니터링 포인트
현재 노드가 온라인 상태가 아닙니다
performance_schema.replication_group_members에서 member_state을 선택;
지연이가
获取 到 的 : performance_schema.replication_connection_status에서 선택 received_transaction_set;
@@ 선택 gtid_executed : 그것은 실행 된
현재 백 로그 큐가 아니다
performanct_schema.replication_group_member_stats에서 count_transaction_in_queue을 선택 여기서 MEMBER_ID = @@ server_uuid;
현재 노드에 쓸 수 없다
performance_shcema.global_variables SELECT * 여기서 ( 'READ_ONLY', 'super_read_only')에 VARIABLE_NAME;
MGR 최적화 방향
조작 및 유지 보수
위키이 복사 동작의 구조, 모든 데이터 복제 또는 재생의 논리 때문에 최적화는 또한 최적화 지점을 복사한다.
변경 :
slave_parallel_type -> LOGICAL_CLOCK
향상된 번호 SQL_THREAD :
slave_parallel_workers -> 2-8
는 CPU 병목 현상, CPU 압축을 줄이고 네트워크 아무 문제, 경우 :
group_replication_compression_threshold = 1000000 -> 2000000
2M가되고 1M에서 증가 된 후, 압축 (주로 대형 트랜잭션 전송에 최적화)
를 들어, 모든 후, 환경의 양을 쓰기
단일 마스터를 사용하여
테이블 구조 설계에 : 인덱스의 수를 줄이기 위해, 다중 이용 공동 인덱스
커널
시도가 이루어지고있다 : const 정적 INT의 BROADCASE_GTID_EXECUTED_PERIOD = 60> 30; // 초
중요 매개 변수 :
group_replication_member_expel_timeout (8.0.13+)
(X + 5) 초 후에 노드 부재 로맨스 그룹으로부터 제거
네트워크 이상 -> 5 초 -> 제거 -> X-초 / 연결할 수를 -> 추측 손실
X의 초, 그룹 노드를 노드를 추가 삭제할 수 없습니다, 예비 선거
group_replication_unreachable_majority_timeout
네트워크 분할 한 후, X의 초 이내에 minorty 회원 ERROR를 입력, 대부분의 연결을 복원하는 데 실패
group_replication_exit_state_action (8.0.12+, 5.7.24+)
ABORT_SERVER / READ_ONLY
대부분 / 이탈 그룹과 연관된 aplier 실행 오류 / 손실이 제거되고
group_replication_recovery_complete_at
TRANSACTIONS_CERTIFIED / TRANSACTIONS_APPLIED
group_replication_member_weight
낮은 단일 주에 유용한, 노드 역할 불평등 한 상황
같은 group_replication_member_weight, 따라 server_uuid
group_replication_transaction_size_limit (5.7.19+)
단일 트랜잭션 제한 바이트의 최대 수는, 그 네트워크 오버 헤드, 메모리 할당, 충돌 확률을 제어 할 수있다
group_replication_compression_threshold
X 바이트보다 더 개방 LZ4 압축 업무 전송, 기본 1메가바이트 후
MGR 배포 아키텍처 권장
MySQLrouter + MGR
라우터 두 인터페이스 (삽입, 판독)
MySQL은 관련 작업을 X 프로토콜 볼 필요가 JS 관련
권장 대안 ProxySQL
단일 마스터 : 성능의 경우
사용하기 쉬운 : 멀티 마스터 (단일 쓰기 포인트, 멀티 포인트 읽기)