MGR의 MySQL의 고 가용성

 

 

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

  단일 마스터 : 성능의 경우

  사용하기 쉬운 : 멀티 마스터 (단일 쓰기 포인트, 멀티 포인트 읽기)

 

 

 

추천

출처www.cnblogs.com/yujiaershao/p/11357932.html