CAP 정리와 MySQL
CAP 정리가 있습니다 : R + W> N. W = 1 (마스터), R = 6 (슬레이브), N = 6이 있다고 가정 해 보겠습니다. 따라서 하나의 슬레이브가 쓰고 읽을 수 있습니다. 정리에 따르면 우리는 강력한 일관성을 보장 할 수 있습니다 (항상 최신 값을 얻습니다).
데이터 저장소가 버전을 확인하고 최신 버전을 반환 할 수 있다는 것을 읽었습니다. 그러나 실제로 MySQL을 사용하는 것이 사실입니까? 아니면 어떤 종류의 중개인을 사용해야할까요? CAP 정리는 MySQL에 어떻게 적용됩니까?
답변
당신이 제안하는 것은 클러스터가 완전히 비공유 아키텍처가 아닌 한 실제로 CAP 정리가 아닙니다. 내 이전 게시물에서 CAP 정리가 무엇인지 유의하십시오 Jan 01, 2013. ACID 및 CAP 정리의 일관성, 동일합니까?
캡
- 일관성 (모든 노드는 최종 일관성을 통해 동일한 데이터를 가짐)
- 유효성
- 파티션 허용 : 임의 메시지 손실 또는 시스템 일부 오류에도 불구하고 시스템이 계속 작동합니다.
각 노드에는 전체 데이터 세트의 전체 사본이 있습니다. 주어진 DB 클러스터는 최종 일관성을 지원해야합니다. 즉, 클러스터 전체에서 ACID 규정 준수를 지원해야합니다.
귀하의 실제 질문
그러나 실제로 MySQL을 사용하는 것이 사실입니까? 아니면 어떤 종류의 중개인을 사용해야할까요? CAP 정리는 MySQL에 어떻게 적용됩니까?
CAP Theorem에서 작동하는 MySQL 설정 은 다음과 같습니다.
- InnoDB 클러스터
- MariaDB Galera 클러스터
- Percona XtraDB 클러스터
최고의 중개인 ??? 작성하는 데이터가 중요하고 사용 가능해야하는 경우 작성한 마스터에서 데이터를 읽으십시오. 앞서 언급 한 클러스터 설정에서 모든 노드는 마스터가 될 수 있습니다. 데이터가 하나의 마스터에 기록되는 경우 클러스터의 모든 노드가 동일한 주어진 트랜잭션에서 COMMIT를 실행하면 모두 데이터를 가지고 다시 읽을 준비가되어 있어야 합니다 .
이러한 마스터에 연결된 슬레이브가있는 경우 각 슬레이브는 데이터가 복제되고 슬레이브에서 표시 될 때까지 마스터 COMMIT를 기다려야합니다.