2012-05-01 2 views
0

아주 작은 NDB 클러스터를 3 대의 컴퓨터로 구축하고 있습니다. 즉, 머신 1은 MGM 서버, MySQL 서버 및 NDB 데이터 노드로 작동합니다. 데이터베이스는 단지 7 GB이므로 각 노드를 적어도 한 번 복제 할 계획입니다. 이제 머신 1의 NDB 노드에 캐시 된 데이터를 사용하여 쿼리가 종료 될 수 있기 때문에 데이터의 기본 소스가 아니더라도 액세스가 훨씬 빠릅니다 (분명한 이유로).MySQL NDB Cluster가 노드 거리를 고려합니까? 그들이 더 가까이 있다면 복제물을 사용할 것인가?

NDB 클러스터가 이와 유사하게 작동합니까? 내가 본 모든 사례에는 최소 5 대의 기계가 있습니다. 이 설명서는 이와 같은 노드 차이를 처리하는 방법은 언급하지 않습니다.

가용성/NoOfReplicas의

MySQL 클러스터 데이터는 2 개 이상의 데이터 노드 프로세스를 통해 복제되는 고 가용성을 제공 할 수 있습니다 :

+0

노드 하나가 캐시에 저장된다는 것은 무엇을 의미합니까? NDB는 메모리 내 데이터베이스 엔진입니다. 데이터는 각 노드에 복제됩니다. 그들은 모두 동일한 데이터를 가지고 있습니다. MySQL 서버를 쿼리하고 사용하는 노드에 대해 걱정하지 마십시오. – Ami

+0

@Ami : [NoOfReplicas] (http://dev.mysql.com/doc/refman/5.1/en/mysql-cluster-ndbd-definition.html#ndbparam-ndbd-noofreplicas)는 무엇입니까? 데이터가 각 노드에 복제? [이 페이지] (http://dev.mysql.com/doc/refman/5.5/en/mysql-cluster-disk-data.html)는 또한 디스크 데이터를 가질 수 있다고 주장합니다. –

답변

2

여기에 몇 가지 질문이 있습니다. 이를 위해서는 NoOfReplicas 구성 매개 변수가 2 이상으로 설정되어야합니다. NoOfReplicas = 1 인 경우 각 행은 하나의 데이터 노드에만 저장되며 데이터 노드 오류는 일부 데이터를 사용할 수 없으므로 데이터베이스 전체를 사용할 수 없음을 의미합니다. NoOfReplicas의 HA = 2의 구성의 경우

시스템/호스트

수는 적어도 3 개 개의 별개의 호스트가 있어야한다. 1은 각 데이터 노드 프로세스마다 필요하며 모든 데이터 사본을 가지고 있습니다. 두 번째 노드 노드 프로세스 간의 통신이 실패 할 경우 '중재자'역할을하는 데 세 번째가 필요합니다. 이렇게하면 데이터 노드 중 하나만 쓰기 트랜잭션을 계속 허용하고 데이터 분산 (스플릿 브레인)을 피할 수 있습니다. 두 개의 호스트 만 있으면 클러스터는 하나의 호스트 장애에 대해서만 복원력을 발휘할 수 있습니다. 대신 다른 호스트가 실패하면 전체 클러스터가 실패합니다. 중재 역할은 매우 가볍기 때문에이 세 번째 시스템은 거의 모든 다른 작업에도 사용할 수 있습니다.

데이터 지역 NoOfReplicas의 2 = 2 노드 구성에서

각 데이터 노드 처리 저장 데이터의 모든. 그러나 이것은 하나의 데이터 노드 프로세스 만 데이터 읽기/쓰기에 사용된다는 의미는 아닙니다. 두 프로세스 모두 쓰기와 관련이 있으므로 (사본을 유지해야하므로) 일반적으로 두 프로세스 중 하나가 읽기와 관련 될 수 있습니다.

2 노드 구성에서 읽기 지역성을 향상시키기위한 몇 가지 작업이 고려되고 있지만 구체적인 내용은 없습니다.

이것은 MySQLD (또는 다른 NdbApi 클라이언트)가 두 개의 데이터 노드 중 하나와 함께 공동 배치 될 때 다른 데이터 노드와 여전히 많은 통신이있을 것임을 의미합니다.