역자: Zhishutang Xingyao 팀
MySQL 8은 점점 더 좋아지고 있으며, 이로 인해 MySQL 복제 R&D 팀에도 열광적인 물결이 일고 있습니다. 우리는 새롭고 흥미로운 기능을 도입하여 전반적으로 MySQL 복제를 개선하기 위해 열심히 노력해 왔습니다. 또한, 우리는 커뮤니티의 제안과 피드백을 들었습니다. 따라서 최신 버전(MySQL 8.0.2)의 이정표를 여러분과 함께 목격하게 된 것을 영광으로 생각하며, 주목할 만한 몇 가지 변경 사항을 요약해 놓았습니다. 아래 블로그를 팔로우하여 이러한 새로운 기능에 대한 몇 가지 통찰력을 공유해 보세요.
그룹을 탈퇴하는 구성원에 대한 변경을 허용하지 않습니다. 그룹 구성원이 그룹을 탈퇴할 때마다 탈퇴하는 구성원은 자동으로 super_read_only를 설정하므로 실수로 인한 실수를 방지할 수 있습니다. DBA, 사용자 또는 라우터/프록시/로드 밸런서 등에 의한 변경 그룹 복제를 탈퇴한 구성원은 기본적으로 수정이 불가능하다는 점 외에도, 가입하는 순간부터 쓰기가 금지될 수도 있습니다. 서버 시작 및 그룹 복제 플러그인 시작 시 super_read_only 매개변수를 설정할 수도 있습니다. 그룹 복제 작업이 성공하면 super_read_only 값이 자동으로 조정됩니다. 다중 마스터 모드에서는 모든 노드가 super_read_only 매개변수를 설정하지 않습니다. 단일 마스터 모드에서는 마스터 노드를 제외하고 다른 모든 노드는 super_read_only를 ON으로 설정합니다. 불행하게도 그룹 복제가 시작되지 않으면 super_read_only 매개변수가 설정되지 않으며 쓰기 작업이 불가능해집니다. 이러한 최신 변경 사항은 MySQL 5.7.19 및 MySQL 8.0.2에도 적용됩니다. 이 모든 것의 큰 부분은 우리가 커뮤니티 피드백을 듣고 이를 개발하고 향상시켰기 때문입니다. --Kenny Gryp에게 감사드립니다
성능 스키마에서 더 많은 정보를 볼 수 있습니다. 기존 성능 스키마 테이블에서 관련 통계 정보의 가독성이 향상되었습니다. "replication_group_members" 및 "replication_group_member_stats" 테이블도 확장되었습니다. 이제 그룹 구성원의 역할 정보, 그룹 구성원 버전 및 트랜잭션 카운터(로컬/원격)를 명확하게 볼 수 있습니다.
할당하여 기본 데이터베이스의 선택을 지정합니다. Weights : 사용자는 그룹 구성원의 가중치를 지정하여 마스터 데이터베이스의 선택을 제어할 수 있습니다. 기존 마스터 노드가 그룹 복제를 종료하면 가중치가 가장 높은 노드가 마스터 노드로 승격됩니다.
일부 미세 조정 항목이 흐름 제어 메커니즘에 추가되었습니다. 이제 사용자는 흐름 제어 구성요소를 더욱 세밀하게 조정할 수 있습니다. 각 구성원에 대한 최소 할당량, 전체 그룹에 대한 최소 커밋 할당량, 프로세스 제어 창 등을 정의할 수 있습니다.
MySQL 8.0.1은 MySQL 복제 코어 프레임워크에 많은 강력한 기능을 추가했습니다. MySQL 8.0.2는 이를 기반으로 다음과 같이 크게 개선되었습니다.
디스크가 가득 찬 경우에도 수신자(IO) 스레드 관리 강화: 이 기능은 수신자와 다른 스레드 간의 관계를 개선합니다. 내부 개선 조정 효율성을 높이고 서로 경쟁을 줄입니다. 최종 사용자의 경우 이는 디스크가 가득 차서 수신 스레드가 차단되는 경우 SHOW SLAVE STATUS와 같은 감시 작업을 더 이상 차단하지 않음을 의미합니다. 또한 새로운 스레드 상태(수신 스레드가 디스크 공간 리소스를 기다리고 있음)를 도입합니다. 또한 디스크가 가득 차서 수신 스레드가 완료되지 않은 작업을 계속할 수 있도록 디스크 공간을 해제할 수 없는 경우 이번에는 다음을 수행할 수 있습니다. 수동으로 중지하면 일반적으로 문제가 없습니다. 그러나 해당 시점에 쓰기 트랜잭션이 지워지고 릴레이 로그가 일관된 상태가 아닌 경우 수신 스레드가 릴레이 로그를 폴링하고 디스크 공간이 사용 가능해질 때까지 기다릴 때 특별한 주의가 필요합니다.
바이너리 로그에 더 많은 메타데이터 정보를 기록합니다. 글로벌 트랜잭션 로그 이벤트에 트랜잭션 길이를 추가합니다. 이는 향후 최적화 작업에 큰 도움이 될 수 있으며 바이너리 로그의 가독성도 향상됩니다.
MySQL 복제의 내부를 살펴보고 계신다면, 정리 작업을 완료하고 기본 구성 요소에 흥미로운 서비스를 추가했다는 사실을 알려드리게 되어 기쁘게 생각합니다.
그룹 회원 이벤트는 전파될 수 있습니다. 내부적으로 다른 구성 요소에. 새로운 기본 서비스 아키텍처를 활용함으로써 그룹 복제 플러그인은 이제 구성원 관련 이벤트에 대해 서버의 다른 구성 요소에 알릴 수 있습니다. 예를 들어 그룹 구성원에게 역할 변경, 중재 손실 등을 알립니다. 다른 구성 요소는 이 정보에 응답할 수 있으며 사용자는 이러한 이벤트를 기록하고 감지하기 위해 자체 구성 요소를 개발할 수도 있습니다.
XCom의 내부 구조에서 노드의 중복 정보 제거(정확성을 엄격하게 보장하는 표준 Paxos 구현): XCom의 구조에서 일부 중복 정보를 제거하여 더 단순해지고, 오류가 줄어들고, 더 쉬워졌습니다. 클러스터에 참여하거나 탈퇴하는 노드를 모니터링하고 시스템에 이전 정보를 유지합니다.
XCom 코어 및 새로운 코딩 스타일에 대한 몇 가지 개선 사항: Paxos 구현의 소스 코드를 살펴보면 수정된 코드가 더 쉽게 읽고 이해할 수 있다는 것을 알 수 있습니다.
이전 버전의 바이너리 로그 변환을 위한 일부 소스 코드 제거: 이번 정리 작업에서는 이전 버전의 My 데이터베이스에서 생성된 일부 바이너리 로그를 제거하고 새 버전에서 인식할 수 있는 일부 코드로 변환했습니다( 이제 MySQL5.0 이상 버전만 지원됩니다.
또 다른 흥미로운 점은 MySQL 8.0.2에서 다음 복제 기본값을 변경했다는 것입니다.
복제된 메타데이터 정보는 기본적으로 INNODB 시스템 테이블에 저장됩니다. 이로 인해 MySQL 복제 기능이 더 많이 변경됩니다. 강력하며 INNODB 트랜잭션 기능을 사용하여 복제가 중단되고 자동으로 복구될 때 지정된 위치로 복구의 정확성을 보장할 수 있습니다. 또한 새로운 기능을 사용하려면 메타데이터를 테이블 형식(예: 그룹 복제 및 다중 소스 복제)으로 저장해야 하며 이는 MySQL 8의 새로운 데이터 사전과 일치합니다.
행 데이터 기반 해시 스캔은 기본적으로 활성화됩니다. 이는 널리 인식되는 접근 방식은 아니지만 슬레이브 데이터베이스에 기본 키 제약 조건이 없는 일부 테이블이 있으면 성능이 향상됩니다. 이 경우 모든 행을 업데이트하는 데 필요한 테이블 스캔 횟수가 줄어들기 때문에 행 기반 복제를 사용할 때 성능 저하가 최소화됩니다(slave_rows_search_algorithms 매개변수의 기본값은 TABLE_SCAN, INDEX_SCAN, HASH_SCAN).
transaction-write-set-extraction 매개변수는 기본적으로 활성화되어 있습니다. 쓰기 세트 추출을 사용하거나 사용자에 대한 그룹 복제를 시작하거나 마스터 서버에서 WRITESET 기반 종속성을 사용하여 마스터를 추적합니다.
바이너리 로그는 기본적으로 활성화됩니다. 만료 시간:expiration-logs-days는 기본적으로 30(30일)으로 설정됩니다.
아시다시피 우리는 매우 바빴습니다. 실제로 MySQL 8.0.2 Milestone Release가 출시되었습니다. 복제 측면에서 우리는 많은 흥미로운 기능이 추가되는 것을 보게 되어 정말 기쁩니다.
이러한 기능을 소개하고 설명하는 전용 블로그가 있을 예정입니다. 테스트를 위해 직접 다운로드할 수도 있습니다(다운로드 주소). 주의해야 할 것은 MySQL 8.0.2 또는 DMR 버전입니다. GA는 사용자의 책임입니다. 여러분의 피드백을 환영하고 감사드립니다. 버그 보고서, 기능 보고서를 통해 피드백을 제공하거나 메일링 리스트를 복사하거나 이(또는 후속) 블로그 게시물에 댓글을 남길 수 있습니다. MySQL 8은 점점 더 좋아지고 더욱 흥미로워질 것입니다.
위 내용은 MySQL 8.0.2의 새로운 복제 기능에 대한 자세한 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!