2017-10-23 10 views
0

MySQL 다중 사이트 클러스터링을 배포하는 옵션을 모색 중입니다. MySQL 클러스터 배포에는 세 개의 사이트가 있으며 두 개의 노드 그룹이 있고 각 노드 그룹에는 NoOfReplicas = 3 인 세 개의 데이터 노드가 있습니다. 노드 그룹의 3 개 데이터 노드는 지리적 분포에 대해 3 개의 서로 다른 사이트에 배치됩니다.MySQL에서 데이터 노드 선택을 수행하는 방법 다중 사이트 클러스터링 - 노드 그룹의 데이터 노드의 지리적 근접성을 기반으로합니까

세 사이트 모두가 mysqld 서버를 통해 MySQL 클러스터에 액세스하고 단일 테이블에서 SELECT 및 INSERT/UPDATE 작업을 수행합니다.

질문 1 : 데이터 노드 쿼리가 사이트에서 발행 될 때 액세스되는

. 쿼리가 쿼리가 발생한 곳과 동일한 사이트에있는 로컬 데이터 노드에 액세스 할 것입니다.

질문 2 : 나는 쿼리 작업에 사용되는 파티션 이해할 수 EXPLAIN 문을 사용

아닌 쿼리에 대한 액세스됩니다 정확한 데이터 노드. 쿼리를 위해 노드 그룹에서 어떤 데이터 노드에 액세스했는지 이해할 수있는 방법이 있습니까?

질문 3 :

는 노드 그룹의 데이터 노드 선택에 대한 태그/사이트 선호도를 설정하는 방법이있다.

+0

첫 번째 읽기 : https://stackoverflow.com/help/how-to-ask 질문을 게시하십시오. –

답변

0

질문 1 : 대답은 테이블에 READ 백업 기능 이 사용되는지 여부에 따라 달라집니다. 그렇지 않으면 쿼리는 거의 항상 기본 위치 인 복제본으로 전송됩니다.

MySQL 서버에서 읽기 백업의 경우 동일한 노드 그룹과 동일한 호스트에있는 데이터 노드 으로 쿼리를 보냅니다. 일반적으로 MySQL 서버에 사용되는 동일한 호스트 이름과 데이터 노드를 기반으로 자동으로 이됩니다. 변수 ndb_data_node_neighbour를 가까운 노드 인 으로 설정할 수도 있습니다 (이것은 MySQL 서버 의 설정 변수입니다).

데이터 노드가 쿼리를 보낼 위치를 평가할 때 데이터가있는 경우 이 로컬 노드로 이동합니다. 그렇지 않으면 주 복제본 노드로 이동합니다.

각 노드에 데이터가 인 경우 완전히 복제 된 테이블을 사용할 수도 있습니다.이 경우 항상 동일한 호스트의 에있는 데이터 노드로 이동하여 데이터를 찾습니다.

질문 2 : 노드와 LDM 스레드에 대한 파티션 매핑은 정적입니다. 이 정보에서 발견 된 ndbinfo 테이블 table_fragments 에서 사용할 수 있습니다 : https://dev.mysql.com/doc/mysql-cluster-excerpt/5.7/en/mysql-cluster-ndbinfo-table-fragments.html

질문 3 : 흥미로운 질문, 나는 아주 최근에 이러한 기능에 노력하고있다. 이 실제로 발표 한 각 데이터 노드와 MySQL 서버에 대한 LocationDomainId을 정의하고 경로 읽기이를 사용하는 경우는 약속 할 수없는 뭔가 평소 아니라, 아이디어는 당신의 생각과 일치한다 수 있는지 여부 요청. 다시 READ 백업 기능 또는 완전히 복제 된 테이블을 사용하는 테이블에만 적용 할 수 있습니다.

+0

답장을 보내 주셔서 감사합니다. FULLY_REPLICATED에 대한 정의는 "FULLY_REPLICATED가 테이블이 완전히 복제되는지 여부, 즉 각 데이터 노드에 테이블의 전체 사본이 있는지 여부를 제어합니다"입니다. NDB 클러스터에서, 각 노드는 노드 그룹에 할당 된 모든 파티션을 기본 파티션이나 복제본으로 포함합니다. 완전 복제 기능은 다른 노드 그룹에 할당 된 모든 파티션을 데이터 노드에도 복사합니다. 이 경우이 배포는 3 개의 노드가있는 단일 노드 그룹 (3 개의 복제본)과 같습니다. 여기에 뭔가 빠졌습니까 – Santhi

+0

하나의 노드 그룹에서 FULLY_REPLICATED가 READ_BACKUP을 사용하는 것과 같습니다. 두 개 이상의 노드 그룹에서 FULLY REPLICATED는 모든 노드 그룹에 복제되지만 READ_BACKUP은 일반 테이블처럼 한 노드 그룹 내의 행만 복제합니다. –