18.3.3.7 MySQL Cluster의 SQL 노드 및 기타 API 노드의 정의
config.ini 파일의 [mysqld] 및 [api] 섹션은 클러스터 데이터에 액세스하는 데 사용되는 MySQL 서버 (SQL 노드) 및 기타 응용 프로그램 (API 노드)가 정의됩니다. 표시된 어떤 매개 변수도 필요하지 않습니다. 컴퓨터 이름 또는 호스트 이름이 지정되어 있지 않으면 모든 호스트에서이 SQL 또는 API 노드를 사용할 수 있습니다. 일반적으로는 [mysqld] 섹션은 클러스터에 SQL 인터페이스를 제공하는 MySQL 서버를 나타내는 데 사용되며 [api] 섹션은 클러스터 데이터에 액세스 할 mysqld 프로세스 이외의 응용 프로그램을 위해 사용되지만, 이 두 값은 실제로는 동의어이다. 예를 들어, SQL 노드 역할을하는 MySQL 서버의 매개 변수를 [api] 섹션에 지정할 수 있습니다.
MySQL Cluster 용 MySQL 서버 옵션은 섹션 18.3.4.2 "MySQL Cluster 용 MySQL Server 옵션" 을 참조하십시오. MySQL Cluster 관련 MySQL 서버 시스템 변수는 섹션 18.3.4.3 "MySQL Cluster 시스템 변수" 를 참조하십시오.
IdEffective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 unsigned [none] 1 - 255 IS Id모든 클러스터 내부 메시지에서 노드를 식별하는 데 사용되는 정수 값입니다. 허용되는 값의 범위는 1-255 (이들을 포함)입니다. 이 값은 노드의 유형에 관계없이 클러스터의 각 노드에서 고유해야합니다.참고데이터 노드 ID는 사용하는 MySQL Cluster 버전에 관계없이 49 미만이어야합니다. 다수의 데이터 노드를 배치하려는 경우, API 노드 (관리 노드)의 노드 ID를 48보다 큰 값으로 제한하는 것이 좋습니다.
NodeId는 API 노드를 식별 할 때 사용하는 것이 좋습니다되는 매개 변수 이름입니다. (Id는 하위 호환성을 계속 지원하지만 현재는 비추천이며, 사용시 경고를 생성합니다. 이것은 또한 앞으로 삭제 될 예정입니다.)ConnectionMapEffective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 string [none] ... N 연결 데이터 노드를 지정합니다.
NodeIdEffective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 unsigned [none] 1 - 255 IS NodeId는 모든 클러스터 내부 메시지에서 노드를 식별하는 데 사용되는 정수 값입니다. 허용되는 값의 범위는 1-255 (이들을 포함)입니다. 이 값은 노드의 유형에 관계없이 클러스터의 각 노드에서 고유해야합니다.참고데이터 노드 ID는 사용하는 MySQL Cluster 버전에 관계없이 49 미만이어야합니다. 다수의 데이터 노드를 배치하려는 경우, API 노드 (관리 노드)의 노드 ID를 48보다 큰 값으로 제한하는 것이 좋습니다.
NodeId은 관리 노드를 식별 할 때 사용하는 것이 좋습니다되는 매개 변수 이름입니다. MySQL Cluster의 아주 오래된 버전에서는이 목적을 위해 별칭 (Id)가 사용되고있었습니다. 이것은 하위 호환성에 계속 대응하고 있습니다 만, 현재는 비추천이며, 사용시 경고를 생성합니다. 또한 MySQL Cluster의 향후 릴리스에서 제거 될 예정입니다.ExecuteOnComputerEffective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 name [none] ... S 이것은 구성 파일의
[computer]섹션에 정의 된 하나의 컴퓨터 (호스트)에 설정되어있는Id를 참조하십시오.HostName이 매개 변수를 지정하면 SQL 노드 (API 노드)가 배치되는 컴퓨터의 호스트 이름이 정의됩니다. 호스트 이름을 지정하려면이 매개 변수 또는Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 name or IP address [none] ... N ExecuteOnComputer중 하나가 필요합니다.config.ini파일의 특정[mysql]또는[api]섹션에HostName또는ExecuteOnComputer가 지정되어 있지 않은 경우, SQL 또는 API 노드는 네트워크 연결을 설정할 수있는 모든 호스트에서 해당 "슬롯"을 사용하여 관리 서버 호스트 시스템에 연결할 수 있습니다. 이것은, 그 밖에 지정되어 있지 않은 경우localhost가HostName으로 사용되는 데이터 노드의 기본 동작과 다릅니다.ArbitrationRank이 매개 변수는 중재자 역할을 할 수있는 노드를 정의합니다. 관리 노드와 SQL 노드 모두가 중재자가 될 수 있습니다. 값 0은 지정된 노드가 중재자로 사용되지 않는 것을 의미합니다. 값 1은 노드에 중재자로서의 높은 우선 순위를 부여합니다. 값 2는 낮은 우선 순위를 부여합니다. 일반적인 구성은 관리 서버의Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 0-2 0 0 - 2 N ArbitrationRank1 (관리 노드의 기본값)로 설정된 각 SQL 노드는 0 (SQL 노드의 기본값)로 설정되기 때문에 관리 서버가 중재자로 사용됩니다.모든 관리 및 SQL 노드에서
ArbitrationRank를 0으로 설정하면 중재를 완전히 비활성화 할 수 있습니다. 이 빠라메라을 무시하고 중재를 제어 할 수 있습니다. 그러기 위해서는,config.ini글로벌 구성 파일의[ndbd default]섹션에Arbitration매개 변수를 설정합니다.ArbitrationDelayEffective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 milliseconds 0 0 - 4294967039 (0xFFFFFEFF) N 이 매개 변수를 0 (기본값) 이외의 값으로 설정하면 중재 요청에 대한 중재자의 응답이 지정된 밀리 초만큼 지연됩니다. 일반적으로이 값을 변경할 필요가 없습니다.
BatchByteSize풀 테이블 스캔이나 인덱스의 범위 스캔으로 변환되는 쿼리는 최상의 성능을 위해 적절하게 크기 조정 된 배치에서 레코드를 가져 오는 것이 중요합니다. 레코드 수 (Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 bytes 16K 1024 - 1M N BatchSize)와 바이트 (BatchByteSize) 모두에서 적절한 크기를 설정할 수 있습니다. 실제 배치 크기는 두 매개 변수에 의해 제한됩니다.이 매개 변수의 설정 방법에 따라 쿼리의 실행 속도의 변화율이 40 %를 초과 할 수 있습니다.
이 매개 변수는 바이트 단위로 측정됩니다. MySQL Cluster NDB 7.3 이상에서는 디폴트 값은 16K입니다.
BatchSizeEffective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 records 256 1 - 992 N 이 매개 변수는 레코드 단위로 측정되며 기본적으로 256으로 설정됩니다. 최대 크기는 992입니다.
ExtraSendBufferMemoryEffective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 bytes 0 0 - 4294967039 (0xFFFFFEFF) N 이 매개 변수를 사용하여 관리 및 API 노드의 하트 비트 스레드의 스케줄링 정책과 우선 순위를 설정합니다. 이 매개 변수를 설정하는 구문을 여기에 나타냅니다.
HeartbeatThreadPriorityEffective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 string [none] ... S Use this parameter to set the scheduling policy and priority of heartbeat threads for management and API nodes. The syntax for setting this parameter is shown here:
HeartbeatThreadPriority =
policy[,priority]policy: {FIFO | RR}이 매개 변수를 설정할 때 정책을 지정해야합니다. 이것은
FIFO(선입 선출) 또는RR(라운드 로빈) 중 하나입니다. 이후에 선택적으로 우선 순위 (정수)를 지정할 수 있습니다.MaxScanBatchSize일괄 처리 크기는 각 데이터 노드에서 전송되는 각 배치의 크기입니다. 다수의 노드에서 병렬로 수신되는 과다한 데이터 량에서 MySQL 서버를 보호하기 위해 대부분의 검사는 병렬로 실행됩니다. 이 매개 변수는 모든 노드의 총 배치 크기 제한을 설정합니다.Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 bytes 256K 32K - 16M N 이 매개 변수의 디폴트 값은 256K 바이트입니다. 최대 크기는 16M 바이트입니다.
TotalSendBufferMemory이 매개 변수는 구성된 모든 트랜스 포터간에 공유되는 송신 버퍼 메모리의이 노드에 할당 된 메모리 총량을 결정하는 데 사용됩니다.Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 bytes 0 256K - 4294967039 (0xFFFFFEFF) N 이 매개 변수를 설정하는 경우 허용되는 최소값은 256K 바이트 최대 값은 4294967039입니다.
TotalSendBufferMemory동작과 사용 및 MySQL Cluster에서의 전송 버퍼 메모리 매개 변수 구성 자세한 내용은 섹션 18.3.2.12 "MySQL Cluster의 전송 버퍼 매개 변수 구성" 을 참조하십시오.AutoReconnect이 매개 변수는 기본적으로Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 boolean false true, false N false입니다. 이에 따라 절단 된 API 노드 (SQL 노드 역할을하는 MySQL 서버 포함)가 기존 연결을 다시 사용하려고하지 않고 클러스터에 새 연결을 강제로 사용하게됩니다 (연결을 다시 사용하면 동적으로 할당 된 노드 ID를 사용할 때 문제가 발생할 수 있기 때문에). (Bug # 45921)참고이 매개 변수는 NDB API를 사용하여 재정의 할 수 있습니다. 자세한 내용은 Ndb_cluster_connection :: set_auto_reconnect () 및 Ndb_cluster_connection :: get_auto_reconnect () 를 참조하십시오.
DefaultOperationRedoProblemAction이 매개 변수는 (Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 enumeration QUEUE ABORT, QUEUE S RedoOverCommitLimit및RedoOverCommitCounter함께) Redo 로그를 디스크에 플러시하는 시간이 너무 긴 경우 데이터 노드가 작업 처리를 제어합니다. 이것은 특정 Redo 로그의 플래시가RedoOverCommitLimit초보다 긴 시간이 지남에RedoOverCommitCounter회 이상의 횟수만큼 수행 보류중인 트랜잭션이 중단 된 경우에 발생합니다.이 발생시는 노드는 다음에 나와
DefaultOperationRedoProblemAction의 값에 따라 두 가지 방법 중 하나를받을 수 있습니다.ABORT: 중단 된 트랜잭션에 포함 된 보류중인 작업도 중지됩니다.QUEUE: 중단 된 트랜잭션에 포함 된 보류중인 작업이 대기열에 다시 시도됩니다.
DefaultHashMapSizeEffective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 buckets 3840 0 - 3840 N MySQL Cluster NDB 7.2.7 이상에서는 이전 릴리스 (240)보다 큰 테이블 해시 맵의 기본 크기 (3840)가 사용됩니다. MySQL Cluster NDB 7.2.11 이후 버전에서는이 매개 변수를 사용하여
NDB가 사용하는 테이블 해시 맵의 크기를 구성 할 수 있습니다 (이전에는이 값은 하드 코딩되어있었습니다).DefaultHashMapSize에는 3 개의 값 (0,240,3840) 중 하나를 지정할 수 있습니다. 이러한 값과 그 효과에 대해 다음 표에서 설명합니다.이 매개 변수의 주된 용도는 더 큰 해시 맵 사이즈 (3840)가 기본 인 MySQL Cluster NDB 7.2.7 이후의 MySQL Cluster 버전과 이전 버전 (기본이 240이었다) 사이의 업그레이드와 (특히 ) 다운 그레이드를 용이하게하는 것입니다. 이것은이 변경 호환성이없는 (Bug # 14800539) 때문입니다. 이 매개 변수를 240으로 설정하고이 값을 사용하는 이전 버전에서 업그레이드를 실행하면 클러스터는 테이블 해시 맵에 이어 작은 크기를 사용하기 위해 업그레이드 된 테이블에서 이전 버전 호환성이 유지됩니다.Value Description / Effect 0클러스터의 모든 데이터 및 API 노드에서이 매개 변수에 설정된 가장 작은 값을 (있으면) 사용합니다. 어떤 데이터 또는 API 노드에 설정되어 있지 않으면 기본값을 사용합니다.
240MySQL Cluster NDB 7.2.7 이전의 모든 MySQL Cluster 릴리스에서 기본적으로 사용되어 원래 해시 맵 크기입니다
3840MySQL Cluster NDB 7.2.7 이상에서 기본적으로 사용되는 더 큰 해시 맵 크기
DefaultHashMapSize는 개별 데이터 노드 API 노드 또는 둘 모두에 설정할 수 있지만,config.ini파일의[ndbd default]섹션에 한 번만 설정하는 방법을 권장합니다.이 매개 변수를 늘린 후 기존 테이블에 새로운 크기를 사용하려면 해당 테이블에
ALTER TABLE ... REORGANIZE PARTITION을 실행합니다. 그런 다음 테이블에서 더 큰 해시 맵 크기를 사용할 수있게됩니다. 이것은 롤링 재시작 실행 이외에합니다. 롤링 재시작을 수행하면 더 큰 해시 맵을 새로운 테이블로 사용 할 수 있지만, 기존의 테이블에서는 사용할 수 없습니다.DefaultHashMapSize을 3840으로 설정하여 테이블을 생성하거나 수정 한 후 온라인으로이 매개 변수를 줄이는 방법은 현재 지원되지 않습니다.WanEffective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 boolean false true, false N WAN의 TCP 설정을 기본값으로 사용합니다.
ConnectBackoffMaxTimeMySQL Cluster NDB 7.3.7 및 MySQL Cluster NDB 7.4.2 이상에서는 MySQL Cluster 내에 시작되지 않은 데이터 노드가 많은 경우이 매개 변수의 값을 늘리 클러스터의 여전히 작동하기 시작하지 않은 데이터 노드에 연결 시도를 회피하여 관리 노드에 대량의 트래픽을 줄일 수 있습니다. API 노드가 새로운 데이터 노드에 연결되어 있지 않은 경우는Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.7 integer 0 0 - 4294967039 (0xFFFFFEFF) N NDB 7.4.2 integer 0 0 - 4294967039 (0xFFFFFEFF) N StartConnectBackoffMaxTime매개 변수 값이 적용됩니다. 그렇지 않으면ConnectBackoffMaxTime을 사용하여 연결 시도 간의 대기 시간 (밀리 초)이 결정됩니다.이 매개 변수의 경과 시간을 계산 할 때 노드의 접속 시행 중에 경과 시간은 고려되지 않습니다. 제한 시간은 100 밀리 초 지연 시작 약 100 밀리 초 분해능으로 적용됩니다. 후속 시도 때마다
ConnectBackoffMaxTime밀리 초 (최대 100,000 밀리 초 (100 초))에 도달 할 때까지이 기간의 길이가 배가됩니다.API 노드가 데이터 노드에 연결된 노드가 (하트 비트 메시지) 다른 데이터 노드에 연결 한 것을보고하면 데이터 노드에 대한 연결 시도는이 매개 변수의 영향을받지 않습니다 다음 연결될 때까지 100 밀리 초 간격으로 이루어집니다. 데이터 노드가 시작하면이 문제가 발생 적이 API 노드에 통지 될 때까지
HeartbeatIntervalDbApi을 필요로합니다StartConnectBackoffMaxTimeMySQL Cluster NDB 7.3.7 및 MySQL Cluster NDB 7.4.2 이상에서는 MySQL Cluster 내에 시작되지 않은 데이터 노드가 많은 경우이 매개 변수의 값을 늘리 클러스터의 여전히 작동하기 시작하지 않은 데이터 노드에 연결 시도를 회피하여 관리 노드에 대량의 트래픽을 줄일 수 있습니다. API 노드가 새로운 데이터 노드에 연결되어 있지 않은 경우는Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.7 integer 0 0 - 4294967039 (0xFFFFFEFF) N NDB 7.4.2 integer 0 0 - 4294967039 (0xFFFFFEFF) N StartConnectBackoffMaxTime매개 변수 값이 적용됩니다. 그렇지 않으면ConnectBackoffMaxTime을 사용하여 연결 시도 간의 대기 시간 (밀리 초)이 결정됩니다.이 매개 변수의 경과 시간을 계산 할 때 노드의 접속 시행 중에 경과 시간은 고려되지 않습니다. 제한 시간은 100 밀리 초 지연 시작 약 100 밀리 초 분해능으로 적용됩니다. 후속 시도 때마다
StartConnectBackoffMaxTime밀리 초 (최대 100,000 밀리 초 (100 초))에 도달 할 때까지이 기간의 길이가 배가됩니다.API 노드가 데이터 노드에 연결된 노드가 (하트 비트 메시지) 다른 데이터 노드에 연결 한 것을보고하면 데이터 노드에 대한 연결 시도는이 매개 변수의 영향을받지 않습니다 다음 연결될 때까지 100 밀리 초 간격으로 이루어집니다. 데이터 노드가 시작하면이 문제가 발생 적이 API 노드에 통지 될 때까지
HeartbeatIntervalDbApi을 필요로합니다.여기에 같이 mysql 클라이언트의
SHOW STATUS를 사용하여 MySQL Cluster SQL 노드로 실행되는 MySQL 서버에서 정보를 검색 할 수 있습니다.
mysql> SHOW STATUS LIKE 'ndb%';
+-----------------------------+---------------+
| Variable_name | Value |
+-----------------------------+---------------+
| Ndb_cluster_node_id | 5 |
| Ndb_config_from_host | 192.168.0.112 |
| Ndb_config_from_port | 1186 |
| Ndb_number_of_storage_nodes | 4 |
+-----------------------------+---------------+
4 rows in set (0.02 sec)
이 문 출력에 표시되는 상태 변수는 섹션 18.3.4.4 "MySQL Cluster의 상태 변수" 를 참조하십시오. 실행중인 MySQL Cluster 구성에 새로운 SQL 또는 API 노드를 추가하려면 config.ini 파일 (여러 관리 서버를 사용하는 경우 여러 파일)에 새로운 [mysqld] 또는 [api] 섹션을 추가 한 나중에 모든 클러스터 노드의 롤링 재시작을 수행해야합니다. 이것은 새로운 SQL 또는 API 노드를 클러스터에 연결하기 전에 실행해야합니다.
새로운 SQL 또는 API 노드가 클러스터 구성에서 이전에 사용되지 않은 API 슬롯을 사용하여 클러스터에 연결하는 경우 클러스터 재부팅을 수행 할 필요가 없습니다.