[database] 마스터-마스터 대 마스터-슬레이브 데이터베이스 아키텍처?

두 종류의 데이터베이스 아키텍처에 대해 들었습니다.

  • 마스터 마스터

  • 주인 노예

마스터-마스터가 오늘날의 웹에 더 적합하지 않습니까? Git과 같고 모든 유닛에는 전체 데이터 세트가 있으며 하나가 다운 되더라도 중요하지 않습니다.

마스터-슬레이브는 일을 처리하는 하나의 중앙 장치가있는 SVN (내가 싫어하는)을 상기시킵니다.

질문 :

  1. 각각의 장단점은 무엇입니까?

  2. iPhone과 같은 휴대폰에 로컬 데이터베이스를 갖고 싶다면 어느 것이 더 적합합니까?

  3. 이 중 하나를 선택하는 것이 철저하게 고려해야 할 중요한 요소입니까?



답변

우리는 가용성, 일관성 및 복잡성을 절충하고 있습니다. 마지막 질문을 먼저 해결하려면 : 이것이 중요합니까? 예 아주 많이! 데이터 관리 방법에 대한 선택은 절대적으로 기본이며 결정을 피하는 “모범 사례”가 없습니다. 특정 요구 사항을 이해해야합니다.

근본적인 긴장이 있습니다.

하나의 사본 : 일관성은 쉽지만 만약 다운되면 모든 사람들이 물에서 벗어나고 사람들이 멀리 떨어져 있으면 끔찍한 통신 비용을 지불 할 수 있습니다. 연결이 끊어진 상태로 작동해야하는 휴대용 장치를 사진으로 가져 오면 한 장으로도 잘리지 않습니다.

마스터 슬레이브 : 데이터의 각 부분에 정확히 하나의 소유 마스터가 있기 때문에 일관성이 그리 어렵지 않습니다. 하지만 그 주인이 보이지 않으면 어떻게해야하나요? 일종의 연기 된 작업이 필요합니다.

마스터-마스터 : 글쎄, 만약 당신이 그것을 작동시킬 수 있다면 그것은 모든 것을 제공하는 것 같고, 단일 실패 지점이 없으며, 모두가 항상 일할 수 있습니다. 이것의 문제점은 절대적인 일관성을 유지 하기가 매우 어렵다는 것입니다 . 자세한 내용은 wikipedia 기사 를 참조하십시오 .

위키 백과에는 장단점에 대한 멋진 요약이있는 것 같습니다.

장점

  • 한 마스터가 실패하면 다른 마스터가 계속 데이터베이스를 업데이트합니다.

  • 마스터는 여러 물리적 사이트에 위치 할 수 있습니다. 즉, 네트워크를 통해 분산됩니다.

단점

  • 대부분의 다중 마스터 복제 시스템은 느슨하게 일관 적입니다. 즉, 지연 및 비동기 ACID 속성을 위반합니다.

  • Eager 복제 시스템은 복잡하며 통신 지연이 발생합니다.

  • 충돌 해결과 같은 문제는 관련된 노드 수가 증가하고 필요한 지연 시간이 감소함에 따라 다루기 어려울 수 있습니다.


답변

다양한 데이터베이스 아키텍처를 연구하면서. 나는 미래에 연구하는 다른 누군가와 관련이있을 수있는 좋은 정보를 수집했습니다. 나는 만났다

  1. 마스터-슬레이브 복제
  2. 마스터-마스터 복제
  3. MySQL 클러스터

내 사용 사례에 MySQL Cluster를 사용하기로 결정했습니다. 그러나 내가 컴파일 한 다양한 장단점은 아래를 참조하십시오.

1. 마스터-슬레이브 복제

장점

  • 분석 애플리케이션은 마스터에 영향을주지 않고 슬레이브에서 읽을 수 있습니다.
  • 마스터에 상대적으로 영향을 미치지 않는 전체 데이터베이스 백업
  • 슬레이브를 오프라인으로 전환하고 다운 타임없이 마스터와 다시 동기화 할 수 있습니다.

단점

  • 장애가 발생한 경우 슬레이브를 마스터로 승격하여 대신해야합니다. 자동 장애 조치 없음
  • 마스터 장애시 다운 타임 및 데이터 손실 가능성
  • 모든 쓰기는 마스터-슬레이브 설계에서 마스터에 작성되어야합니다.
  • 각 추가 슬레이브는 바이너리 로그를 읽고 각 슬레이브에 데이터를 복사해야하기 때문에 마스터에 약간의 부하를 추가합니다.
  • 응용 프로그램을 다시 시작해야 할 수 있습니다.

2. 마스터-마스터 복제

장점

  • 응용 프로그램은 두 마스터 모두에서 읽을 수 있습니다.
  • 두 마스터 노드에 쓰기로드를 분산합니다.
  • 간단하고 자동이며 빠른 장애 조치

단점

  • 느슨하게 일관성
  • 구성 및 배포가 마스터-슬레이브만큼 간단하지 않음

3. MySQL 클러스터

MySQL 클러스터 설계를 기반으로 한 새로운 아이. MySQL 클러스터는 고가용 성과 확장 성을 염두에두고 개발되었으며 가동 중지 시간, 높은 가용성 및 수평 확장 성이 필요한 환경에 사용하기에 이상적인 솔루션입니다.

자세한 내용은 MySQL Cluster 101 을 참조하십시오.

장점

  • (높은 가용성) 단일 실패 지점 없음
  • 매우 높은 처리량
  • 99.99 % 가동 시간
  • 자동 샤딩
  • 실시간 응답 성
  • 온라인 운영 (스키마 변경 등)
  • 분산 쓰기

단점

언급 된 3 개의 아키텍처에 대한 추가 세부 사항으로 들어가는 아키텍처 다이어그램을 포함하여 내 블로그 전체 분석을 방문 할 수 있습니다 .


답변