배경
전통적으로 데이터 복제에는 세 가지 방법이 있습니다.
비동기 복제: 애플리케이션이 업데이트 요청을 시작합니다. 해당 작업이 완료되면 프라이머리 노드(Master)는 즉시 애플리케이션에 응답하고 데이터를 세컨더리 노드(Slave)에 비동기식으로 복제합니다.
강력한 동기화 복제: 애플리케이션이 업데이트 요청을 시작합니다. 작업이 완료되면 Master는 즉시 Slave에 데이터를 복제합니다. 데이터를 수신한 후 Slave는 Master에 성공 메시지를 반환합니다. Slave에서 메시지를 받은 후에야 Master가 애플리케이션에 응답합니다. 데이터는 Master에서 Slave로 동기식으로 복제됩니다.
반동기화 데이터 복제: 애플리케이션에서 업데이트 요청을 시작하면 Master 노드에서 업데이트 작업이 실행되는 즉시 Master 노드가 데이터를 Slave 노드로 복제합니다. 데이터를 수신하고 relay log에 기록한 후(실행에 필요하지 않음) Slave 노드는 Master 노드에 메시지를 반환합니다. 메시지가 성공적으로 반환된 후에만 Master 노드는 요청 성공으로 애플리케이션에 응답할 수 있습니다.
기존 문제
Master 또는 Slave를 사용할 수 없는 경우 위의 세 가지 방법에 대한 데이터 불일치 가능성이 있습니다.
시스템 데이터 저장 및 서비스의 핵심으로 데이터베이스는 고가용성이어야 합니다. 프로덕션 시스템에서 중단 없는 시스템 운영을 보장하기 위해 고가용성 솔루션이 필요한 경우가 많으며 데이터 동기화 기술은 이러한 솔루션의 기반이 됩니다.
해결 방안
MySQL 프로토콜을 기반으로 하는 Tencent Cloud의 독점 병렬 다중 스레드 비동기 복제(MAR, 강력한 동기화) 방식에서는 세컨더리 노드가 데이터(로그)를 성공적으로 동기화한 후에만 기본 노드가 애플리케이션 레이어에 응답할 수 있으므로 프라이머리 및 세컨더리 노드에는 완전히 동일한 데이터가 있습니다.
순서도는 다음과 같습니다.
MAR 방식에서 애플리케이션 레이어에서 요청이 시작되면 세컨더리 노드(Slave)가 성공적으로 메시지를 반환한 후에만 프라이머리 노드(Master)가 애플리케이션 레이어에 요청 성공으로 응답할 수 있으므로 프라이머리 노드와 세컨더리 노드의 데이터가 완전히 동일한지 확인합니다.
MAR 강제 동기화 체계는 다른 주요 동기화 체계보다 성능이 뛰어납니다. 자세한 내용은 강제 동기화에 대한 성능 비교 데이터를 참고하십시오. 다음과 같은 기능이 있습니다. 일관된 동기 복제는 노드 간의 강력한 데이터 일관성을 보장합니다.
비즈니스에 대한 완전한 인식 불가는 비즈니스 측면에서 읽기/쓰기 분리 및 동기화 향상이 필요하지 않음을 의미합니다.
직렬 동기화 스레드의 동기화와 스레드 풀의 도입으로 성능이 크게 향상됩니다.
클러스터 아키텍처가 지원됩니다.
자동 구성원 제어가 지원되며 결함이 있는 노드는 클러스터에서 자동으로 제거됩니다.
자동 노드 조인은 사람의 개입 없이 지원됩니다.
각 노드에는 데이터의 완전한 복제본이 포함되어 있으며 언제든지 전환할 수 있습니다.
저장 장치를 공유할 필요가 없습니다.