18.3.3.6 MySQL Cluster 데이터 노드의 정의
클러스터의 데이터 노드의 동작을 구성하려면[ndbd]
및 [ndbd default]
섹션을 사용합니다. 데이터 노드의 프로세스로 ndbd 바이너리와 ndbmtd 바이너리 중 어느 것을 사용하더라도 섹션 이름은 항상 [ndbd]
와 [ndbd default]
가 사용됩니다.
버퍼 크기, 풀 크기, 시간 등을 제어하는 여러 매개 변수가 있습니다. 유일한 필수 매개 변수는 ExecuteOnComputer
또는 HostName
중 하나입니다. 이것은 로컬 [ndbd]
섹션에서 정의해야합니다.
NoOfReplicas
매개 변수는 모든 클러스터 데이터 노드에 공통이기 때문에 [ndbd default]
섹션에 정의하십시오. NoOfReplicas
를 설정할 필요는 반드시 없습니다 만, 이것을 명시 적으로 설정하는 것이 좋습니다.
대부분의 데이터 노드 파라미터는 [ndbd default]
섹션에 설정합니다. [ndbd]
섹션에서 변경이 허용되는 로컬 값 설정을 명시 적으로 규정되어있는 파라미터뿐입니다. HostName
, NodeId
및 ExecuteOnComputer
(존재하는 경우)는 config.ini
다른 섹션이 아닌 로컬 [ndbd]
에서 정의해야합니다. 즉, 이러한 매개 변수의 설정은 하나의 데이터 노드에 고유의 것입니다.
메모리 사용량 및 버퍼 크기에 영향을 미치는 매개 변수는 1024,1024 * 1024 또는 1024 * 1024 * 1024의 단위를 나타내는 접미사로 K
, M
또는 G
를 사용할 수 있습니다. (예를 들어, 100K
는 100 * 1024 = 102400을 의미합니다.) 현재 매개 변수의 이름과 값은 대소 문자를 구분합니다.
MySQL Cluster 디스크 데이터 테이블에 특정 구성 매개 변수에 대해서는이 섹션 뒷부분합니다 ( 디스크 데이터의 구성 매개 변수 를 참조하십시오).
이러한 모든 매개 변수는 ndbmtd (ndbd의 멀티 스레드 버전)에도 적용됩니다. 추가 3 개의 데이터 노드 구성 매개 변수 ( MaxNoOfExecutionThreads
, ThreadConfig
및 NoOfFragmentLogParts
)는 ndbmtd에만 적용됩니다. 이러한 ndbd에 사용하여도 비활성화됩니다. 자세한 내용은 멀티 스레드 구성 매개 변수 (ndbmtd) 를 참조하십시오. 섹션 18.4.3 "ndbmtd - MySQL Cluster 데이터 노드 데몬 (멀티 스레드)" 를 참조하십시오.
데이터 노드의 식별 NodeId
또는 Id
값 (즉, 데이터 노드 식별자)은 노드 시작시 명령 행 또는 구성 파일에서 할당 할 수 있습니다.
Id
Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 unsigned [none] 1 - 48 IS NodeId
는 데이터 노드의 식별시에 사용이 권장되는 매개 변수 이름입니다. 오래된Id
는 하위 호환성을 계속 지원하지만 현재는 비추천이며, 사용시 경고를 생성합니다.Id
는 MySQL Cluster의 향후 릴리스에서 제거 될 예정입니다.NodeId
Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 unsigned [none] 1 - 48 IS NodeId
는 데이터 노드의 식별시에 사용이 권장되는 매개 변수 이름입니다.Id
는 하위 호환성을 계속 지원하지만 현재는 비추천이며, 사용시 경고를 생성합니다. 또한 MySQL Cluster의 향후 버전에서 제거 될 예정입니다.ExecuteOnComputer
Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 name [none] ... S 이것은
[computer]
섹션에 정의 된 하나의 컴퓨터에 설정되어있는Id
를 참조하십시오.HostName
Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 name or IP address localhost ... N 이 매개 변수를 지정하면 데이터 노드를 배치하는 컴퓨터의 호스트 이름이 정의됩니다.
localhost
이외의 호스트 이름을 지정하려면이 매개 변수 또는ExecuteOnComputer
중 하나가 필요합니다.ServerPort
Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 unsigned [none] 1 - 64K S 그러나 데이터 노트와 API 노드 (SQL 노드 포함) 사이의 통신을 허용하도록 방화벽에서 특정 포트를 열어야하는 경우,
config.ini
파일의[ndbd]
섹션 또는 (여러 데이터 노드에 대해 이렇게 필요가있는 경우)[ndbd default]
섹션에서이 매개 변수를 필요한 포트 번호로 설정하면 SQL 노드 API 노드 또는 둘 다에서 들어오는 연결을 위해 그 번호의 포트를 열 수 있습니다.참고데이터 노드에서 관리 노드에 연결 ndb_mgmd 관리 포트 (관리 서버
PortNumber
. 섹션 18.3.2.5 "MySQL Cluster 관리 서버의 정의" 를 참조하십시오)를 사용하여 이루어 지므로 데이터 노드에서 포트에 아웃 바운드 연결은 항상 허용됩니다.TcpBind_INADDR_ANY
이 매개 변수를
TRUE
또는1
로 설정하면IP_ADDR_ANY
가 바인딩 된 모든 위치에서 연결 할 수 있습니다 (자동 생성 연결의 경우). 기본값은FALSE
(0
)입니다.NodeGroup
Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 [none] 0 - 65536 IS config.ini
파일의[ndbd default]
섹션에서이 매개 변수를 사용하는 것은 일반적으로 바람직하지 않습니다. 또한 노드를 노드 그룹에 할당 할 때 노드 그룹에 잘못된 수의 노드를 할당하지 않도록주의해야합니다.NodeGroup
매개 변수의 주된 용도는 롤링 재시작을 수행하지 않고 실행중인 MySQL Cluster에 새로운 노드 그룹을 추가하는 것입니다. 그러기 위해서는이를 65536 (최대 값)로 설정합니다.NodeGroup
값은 모든 클러스터 데이터 노드가 아니라 나중에 시작되고 새로운 노드 그룹으로 클러스터에 추가되는 노드에만 설정해야합니다. 자세한 내용은 섹션 18.5.13.3 "MySQL Cluster 데이터 노드의 온라인 추가 : 자세한 예제" 를 참조하십시오.NoOfReplicas
Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 integer 2 1 - 4 IS [ndbd default]
섹션에서만 설정할 수 있으며, 클러스터에 저장되어있는 각 테이블의 복제본 수를 정의합니다. 이 매개 변수는 노드 그룹의 크기도 지정합니다. 노드 그룹은 모두 동일한 정보를 저장하는 노드의 세트입니다.노드 그룹은 암묵적으로 형성됩니다. 첫 번째 노드 그룹은 노드 ID가 가장 작은 데이터 노드 세트에서 형성된 다음 노드 그룹은 노드 ID가 다음 데이터 노드의 집합으로 형성됩니다 (이하 동일). 예를 들어, 4 개의 데이터 노드가 있고,
NoOfReplicas
가 2로 설정되어 있다고합니다. 4 개의 데이터 노드의 ID는 각각 2,3,4 및 5입니다. 이 경우 첫 번째 노드 그룹은 노드 2와 3으로 형성되고, 두 번째 노드 그룹은 노드 4와 5에서 형성됩니다. 하나의 하드웨어 장애로 인해 전체 클러스터가 작동 중지 동일한 노드 그룹의 노드가 같은 컴퓨터에 배치되지 않도록 클러스터를 구성하는 것이 중요합니다.노드 ID가 지정되어 있지 않으면 데이터 노드의 순서가 노드 그룹의 결정 요인이됩니다. 명시적인 할당이 행해졌는지 여부에 관계없이 관리 클라이언트의
SHOW
명령의 출력에 표시됩니다.NoOfReplicas
의 기본값은 2입니다. 이것은 대부분의 일반적인 사용 시나리오에서 권장되는 설정입니다.지정 가능한 최대 값은 4이며, 현재 실제로 지원되는 값은 1과 2뿐입니다.
중요NoOfReplicas
을 1로 설정하는 것은 모든 클러스터 데이터의 사본이 하나만 존재하는 것을 의미합니다. 이 경우 해당 데이터에 저장되어있는 데이터의 추가 사본이 존재하지 않기 때문에 하나의 데이터 노드의 상실에 의해 클러스터가 작동 중지합니다.이 매개 변수의 값은 클러스터의 데이터 노드의 수 등분해야합니다. 예를 들어, 데이터 노드가 2 개의 경우 2 / 3과 2/4는 모두 소수하므로
NoOfReplicas
는 1 또는 2 일 필요가 있습니다. 데이터 노드가 4 개의 경우NoOfReplicas
는 1, 2 또는 4 일 필요가 있습니다.DataDir
Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 path . ... IN 기본값은 데이터 노드 프로세스의 작업 디렉토리입니다.
FileSystemPath
Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 path DataDir ... IN DataDir
에서 지정된 디렉토리입니다.참고이 디렉토리는 ndbd 프로세스가 시작되기 전에 존재해야합니다.
MySQL Cluster의 권장 디렉토리 계층은
/var/lib/mysql-cluster
가 포함되어 있으며,이 아래에 노드의 파일 시스템 디렉토리가 생성됩니다. 이 하위 디렉토리 이름에는 노드 ID가 포함됩니다. 예를 들어, 노드 ID가 2 인 경우이 서브 디렉토리의 이름은ndb_2_fs
입니다.BackupDataDir
Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 path [see text] ... IN 중요이 값의 끝에 항상 '
/BACKUP
'라는 문자열이 추가됩니다. 예를 들어,BackupDataDir
값을/var/lib/cluster-data
로 설정하면 모든 백업/var/lib/cluster-data/BACKUP
아래에 저장됩니다. 이것은 사실상 기본 백업 위치를FileSystemPath
매개 변수로 지정된 위치 아래BACKUP
라는 디렉토리 있다는 것을 의미합니다.데이터 메모리, 인덱스 메모리, 그리고 스트링 메모리
DataMemory
및IndexMemory
는 실제 레코드와 인덱스를 저장하는 데 사용되는 메모리 세그먼트의 크기를 지정하는[ndbd]
매개 변수입니다. 이 값을 설정하는 경우,DataMemory
및IndexMemory
가 어떻게 사용되는지를 이해하는 것이 중요합니다. 이들은 일반적으로 클러스터의 실제 사용 상황을 반영하여 업데이트 할 필요가 있기 때문입니다.
DataMemory
Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 bytes 80M 1M - 1024G N DataMemory
가 할당 한 메모리는 실제 레코드와 인덱스를 모두 저장하는 데 사용됩니다. 각 레코드에는 16 바이트의 오버 헤드가 있습니다. 각 레코드는 128 바이트 페이지 오버 헤드를 포함한 32K 바이트의 페이지에 저장되기 때문에 각 레코드에 추가 금액이 발생합니다 (다음을 참조하십시오). 또한 각 레코드가 하나의 페이지 만 저장되기 때문에 페이지마다 소량의 낭비가 발생합니다.가변 크기의 테이블 속성은
DataMemory
에서 할당 된 별도의 데이터 페이지에 데이터가 저장됩니다. 가변 길이 레코드는 가변 크기 부분을 참조하기 위해 4 바이트의 추가 오버 헤드를 포함한 고정 크기 부분을 사용합니다. 가변 크기 부분은 2 바이트의 오버 헤드와 특성 당 2 바이트가 포함됩니다.최대 레코드 크기는 14000 바이트입니다.
DataMemory
에 의해 정의 된 메모리 공간은 순서화 된 인덱스를 저장하는 데 사용됩니다. 여기에는 레코드 당 약 10 바이트가 사용됩니다. 각 테이블 행은 정렬 된 인덱스로 표시됩니다. 사용자들 사이에서 공통적으로 모든 인덱스가IndexMemory
가 할당 한 메모리에 저장된다는 오해가 있지만, 이것은 올바르지 않습니다. 기본 키 및 고유 해시 인덱스 만이 메모리를 사용합니다. 정렬 된 인덱스는DataMemory
가 할당 한 메모리를 사용합니다. 그러나 기본 키 또는 고유 해시 인덱스를 만들 때 인덱스 생성 구문에USING HASH
를 지정하지 않은 경우는 같은 키에 정렬 된 인덱스도 생성됩니다. 이것은 관리 클라이언트에서 ndb_desc -ddb_name
table_name
를 실행하면 확인할 수 있습니다.현재 MySQL Cluster에서는 해시 인덱스 파티션 당 최대 512M 바이트를 사용할 수 있습니다. 즉, 경우에 따라서는 ndb_mgm -e "ALL REPORT MEMORYUSAGE"에서
DataMemory
에 큰 공간이 표시되어 있어도 Table is full 오류가 MySQL 클라이언트 응용 프로그램에서 나타날 수 있습니다. 따라서 데이터의 부하가 높은 노드에서 데이터 노드를 다시 시작할 때 문제가 발생할 수 있습니다.CREATE TABLE
에MAX_ROWS
옵션을 사용하면 MySQL Cluster 테이블에 추가 파티션을 작성하여 해시 인덱스에 사용할 수있는 메모리를 늘리도록NDB
에 적용 할 수 있습니다. 일반적으로 테이블에 저장하는 것으로 예상되는 행 수의 2 배의 수치를MAX_ROWS
로 설정하면 충분합니다.MinFreePct
구성 매개 변수를 사용하여 노드 재부팅 문제를 해결 할 수 있습니다. (Bug # 13436216)DataMemory
에 의해 할당 된 메모리 공간은 32K 바이트의 페이지로 구성된 테이블 조각에 할당됩니다. 각 테이블은 일반적으로 클러스터의 데이터 노드와 같은 수의 조각으로 분할됩니다. 따라서 각 노드는NoOfReplicas
의 설정과 같은 몇 조각이 있습니다.페이지의 할당 후 테이블을 삭제하는 이외의 방법으로 빈 페이지 풀로 반환하는 것은 현재 불가능합니다. (이것은 특정 페이지에 할당 된
DataMemory
페이지를 다른 테이블에서 사용할 수없는 것을 의미합니다.) 데이터 노드 복구를 실행하면 모든 레코드가 다른 실행중인 노드에서 빈 파티션 에 삽입되기 때문에 파티션도 압축됩니다.DataMemory
메모리 공간에는 Undo 정보도 포함되어 있습니다. 업데이트 때마다 변경되지 않은 레코드 복사본이DataMemory
에 할당됩니다. 정렬 된 테이블 인덱스에도 각 사본에 대한 참조가 포함되어 있습니다. 고유 해시 인덱스는 고유 인덱스 컬럼이 업데이트 된 경우에만 업데이트됩니다. 이 경우 위탁시에 인덱스 테이블에 새 항목이 삽입되어 오래된 항목이 삭제됩니다. 따라서 클러스터를 사용하는 응용 프로그램에 의해 실행되는 대규모 트랜잭션을 처리 할 수있는 충분한 메모리를 할당해야합니다. 어쨌든도 다음의 이유로 소수의 대규모 트랜잭션을 실행하는 것보다 많은 수의 작은 트랜잭션을 사용하는 것이 장점이 있습니다.대규모 트랜잭션은 작은 트랜잭션보다 빠르게 수행 할 수 없습니다
대규모 트랜잭션은 트랜잭션 실패시에 소실 반복해야하는 작업의 수가 많아집니다
대규모 트랜잭션은 더 많은 메모리를 사용합니다
DataMemory
의 디폴트 값은 80M 바이트입니다. 최소 1M 바이트입니다. 최대 크기는 아니지만 실제로는 제한에 도달하면 프로세스가 스와핑을 시작하지 않도록 최대 크기를 결정해야합니다. 이 제한은 시스템에서 사용 가능한 실제 RAM의 양과 운영 체제가 하나의 프로세스에 commit 할 수 있는 메모리 양에 따라 결정됩니다. 32 비트 운영 체제에서는 보통 프로세스 당 2-4G 바이트로 제한되지만 64 비트 운영 체제에서 더 많은 메모리를 사용할 수 있습니다. 따라서 대규모 데이터베이스에서는 64 비트 운영 체제를 사용하는 것이 좋습니다.IndexMemory
Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 bytes 18M 1M - 1T N 해시 인덱스의 크기는이 식을 사용하여 계산할 수 있습니다.
size = ((
fragments
* 32K) + (rows
* 18)) *replicas
fragments
는 조각의 수,replicas
는 복제 수 (보통 2)rows
행의 수입니다. 테이블에 100 만개의 행 8 개 조각 두 복제본이 포함 된 경우 예상되는 인덱스의 메모리 사용량은 여기에 같이 계산됩니다.((8 * 32K) + (1000000 * 18)) * 2 = ((8 * 32768) + (1000000 * 18)) * 2 = (262144 + 18000000) * 2 = 18262144 * 2 = 36524288 bytes = ~ 35MB
MySQL Cluster NDB 7.2 이상에서는 정렬 된 인덱스의 인덱스 통계가 (활성화되어있는 경우)
mysql.ndb_index_stat_sample
테이블에 저장됩니다. 이 테이블은 해시 인덱스가 있기 때문에 이에 따라 인덱스의 메모리 사용량이 추가됩니다. 특정 정렬 된 인덱스의 행수의 상한은 다음과 같이 계산할 수 있습니다.sample_size = key_size + ((key_attributes + 1) * 4) sample_rows =
IndexStatSaveSize
* ((0.01 *IndexStatSaveScale
* log2 (rows * sample_size)) + 1) / sample_size이전 식에서
key_size
은 정렬 된 인덱스 키의 크기 (바이트)key_attributes
은 정렬 된 인덱스 키의 속성 수,rows
는 기본 테이블의 행수입니다.테이블
t1
에 100 만 개의 행과 2 개의 4 바이트 정수에 대한ix1
라는 정렬 된 인덱스가 있다고합니다. 또한IndexStatSaveSize
과IndexStatSaveScale
이 기본값 (각각 32K 및 100)에 설정되어 있다고합니다. 이전 두 표현식을 사용하여 다음과 같이 계산할 수 있습니다.sample_size = 8 + ((1 + 2) * 4) = 20 bytes sample_rows = 32K * ((0.01 * 100 * log 2 (1000000 * 20)) + 1) / 20 = 32768 * ((1 * ~ 16.811) + 1) / 20 = 32768 * ~ 17.811 / 20 = ~ 29182 rows
예상되는 인덱스의 메모리 사용량은 2 * 18 * 29182 = 약 1050550 바이트입니다.
IndexMemory
의 디폴트 값은 18M 바이트입니다. 최소는 1M 바이트입니다.StringMemory
Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 % or bytes 25 0 - 4294967039 (0xFFFFFEFF) S config.ini
파일의[ndbd]
또는[ndbd default]
섹션에 지정됩니다.0
에서100
까지의 (이들을 포함) 값은 기본 최대 값의 백분율로 해석됩니다. 기본 최대 값은 테이블의 수, 테이블 이름의 크기,.FRM
파일의 최대 크기,MaxNoOfTriggers
컬럼 이름의 최대 크기 및 기본 최대 컬럼 값을 포함한 여러 요소에 따라 계산됩니다.100
이상의 값은 바이트로 해석됩니다.기본값은 25 (즉, 기본 최대 25 %)입니다.
대부분의 상황에서 기본값으로 충분하지만, 클러스터 테이블의 수가 매우 많다 (1000 개 이상) 경우 오류 773 Out of string memory, please modify StringMemory config parameter : Permanent error : Schema error가 발생할 수 이 때문에, 그 경우는이 값을 늘리도록하십시오.
25
(25 %)이면 너무 것은 아니라 가장 극단적 인 경우를 제외하고이 오류가 다시 발생하지 않습니다.다음 예제는 하나의 테이블에 메모리가 어떻게 사용되는지를 보여줍니다. 이 테이블 정의에 대해 생각합니다.
CREATE TABLE example ( a INT NOT NULL, b INT NOT NULL, c INT NOT NULL, PRIMARY KEY (a) UNIQUE (b) ) ENGINE = NDBCLUSTER;
각 레코드에 12 바이트의 데이터와 12 바이트의 오버 헤드가 있습니다. NULL 허용 컬럼이없는 경우는 4 바이트의 오버 헤드를 줄일 수 있습니다. 또한 컬럼
a
와b
에 2 개의 정렬 된 인덱스가 레코드 당 약 10 바이트가 소모됩니다. 기본 테이블에 기본 키의 해시 인덱스가 레코드 당 약 29 바이트가 사용됩니다.b
를 기본 키로하고a
를 컬럼으로하는 다른 테이블에 의해 UNIQUE 제약 조건이 구현되어 있습니다. 이 다른 테이블에서는 8 바이트의 레코드 데이터와 12 바이트의 오버 헤드뿐만 아니라,example
테이블에서 레코드 당 29 바이트의 인덱스 메모리가 추가로 소모됩니다.따라서 100 만개의 레코드에 대한 기본 키 및 고유 제약의 해시 인덱스를 처리하려면 58M 바이트의 인덱스 메모리가 필요합니다. 또한 기본 테이블 레코드 고유 인덱스 테이블, 그리고 두 개의 정렬 된 인덱스 테이블에 64M 바이트가 필요합니다.
해시 인덱스가 상당한 메모리를 차지하지만, 데이터에 대한 액세스는 매우 빨라집니다. 이들은 MySQL Cluster는 고유 제약을 처리하는 데 사용됩니다.
현재 유일한 분할 알고리즘은 해시이며, 정렬 된 인덱스는 각 노드에 로컬로 사용됩니다. 따라서 일반적인 경우 정렬 된 인덱스를 사용하여 고유 제약을 처리 할 수 없습니다.
IndexMemory
및DataMemory
모두에서 중요한 점은 각 노드 그룹의 모든 데이터 메모리와 인덱스 메모리의 합이 데이터베이스의 총 크기가 될 것입니다. 각 노드 그룹은 복제 된 정보를 저장하는 데 사용되므로 두 개의 복제본을 포함하는 노드가 4 개있는 경우, 2 개의 노드 그룹이 생성됩니다. 따라서 사용 가능한 데이터 메모리의 총 데이터 노드마다 2 *DataMemory
입니다.모든 노드에서
DataMemory
및IndexMemory
값을 동일하게 설정하는 것이 좋습니다. 데이터의 분포는 클러스터의 모든 노드에 균등이기 때문에 각 노드에서 사용할 수있는 공간의 최대 크기는 클러스터 내에서 가장 작은 노드의 최대 크기와 동일합니다.DataMemory
및IndexMemory
는 변경할 수 있지만,이 중 하나를 줄이는 것은 위험합니다. 이 경우 노드 또는 MySQL Cluster 전체 메모리 공간의 부족으로 다시 시작하지 못할 가능성이 높아집니다. 이 값을 늘리는 것은 문제가되지 않지만 이러한 업그레이드는 소프트웨어 업그레이드와 같은 방법으로 할 것을 권장합니다. 즉, 먼저 구성 파일을 업데이트 한 다음 관리 서버를 시작하고 각 데이터 노드를 차례로 다시 시작합니다.MinFreePct
DataMemory
및IndexMemory
를 포함한 데이터 노드 자원의 일정 비율 (기본적으로 5 %)는 데이터 노드가 재시작 할 때 그 메모리를 소모하지 않도록 여분으로 남아 있습니다. 이것은MinFreePct
데이터 노드 구성 매개 변수를 사용하여 조정할 수 있습니다 (기본값은 5).
Effective Version | Type/Units | Default | Range/Values | Restart Type |
---|---|---|---|---|
NDB 7.3.0 | unsigned | 5 | 0 - 100 | N |
트랜잭션 매개 변수 아래에서 설명하는 [ndbd]
의 몇 가지 매개 변수는 시스템에서 처리 할 수있는 병렬 트랜잭션의 수와 트랜잭션의 크기에 영향을 준다는 점에서 중요합니다. MaxNoOfConcurrentTransactions
노드에서 실행할 수있는 병렬 트랜잭션의 수를 설정합니다. MaxNoOfConcurrentOperations
는 동시에 업데이트 단계에 들어가거나 잠 그거나 수있는 레코드 수를 설정합니다.
이러한 매개 변수는 모두 (특히 MaxNoOfConcurrentOperations
는) 기본값을 사용하지 않고 특정 값을 설정하는 사용자의 대상이 될 가능성이 있습니다. 기본값은 소규모 트랜잭션을 사용하는 시스템에서 과도한 메모리가 사용되지 않도록 설정되어 있습니다.
MaxDMLOperationsPerTransaction
은 특정 트랜잭션에서 수행 할 수있는 DML 작업의 최대 수를 설정합니다.
MaxNoOfConcurrentTransactions
Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 integer 4096 32 - 4294967039 (0xFFFFFEFF) N 트랜잭션 레코드는 개별 MySQL 서버에 할당됩니다. MySQL 서버에 각 연결은 하나의 트랜잭션 레코드와 연결 액세스되는 테이블마다 추가 트랜잭션 개체가 필요합니다. 즉, 클러스터의 트랜잭션 총 수의 타당한 최소 값을 다음과 같이 나타낼 수 있습니다.
MinTotalNoOfConcurrentTransactions = (maximum number of tables accessed in any single transaction + 1) * number of SQL nodes
클러스터를 사용하는 10 개의 SQL 노드가 있다고합니다. 10 개의 테이블이 관여 한 번 결합에는 11 개의 트랜잭션 레코드가 필요합니다. 트랜잭션 내에 이러한 결합이 10 회있는 경우,이 트랜잭션에는 MySQL 서버 당 10 * 11 = 110 개의 트랜잭션 레코드 (또는 총 110 * 10 = 1100 개의 트랜잭션 레코드)가 필요합니다. 각 데이터 노드는 MinTotalNoOfConcurrentTransactions / 데이터 노드가 처리됩니다. 이 경우, 4 개의 데이터 노드를 포함 MySQL Cluster에서는 각 데이터 노드의
MaxNoOfConcurrentTransactions
를 1100/4 = 275으로 설정하는 것입니다.또한 하나의 노드 그룹에서 모든 병렬 트랜잭션에 대응할 수 있도록함으로써 장애 복구를 제공합니다. 즉, 각 데이터 노드의 MaxNoOfConcurrentTransactions을 MinTotalNoOfConcurrentTransactions / 노드 그룹 수와 같은 수의 트랜잭션에 대응할 수있는 충분한 수를 설정합니다. 이 클러스터에 노드 그룹이 하나만있는 경우MaxNoOfConcurrentTransactions
1100 (전체 클러스터의 병렬 트랜잭션의 수와 동일)로 설정하도록하십시오.또한 각 트랜잭션에 적어도 하나의 조작이 관여합니다. 따라서
MaxNoOfConcurrentTransactions
에 설정하는 값은 항상MaxNoOfConcurrentOperations
값 이하로합니다.이 매개 변수는 모든 클러스터 데이터 노드에 같은 값으로 설정해야합니다. 이것은 데이터 노드의 기능 정지시에 잔존하는 가장 오래된 노드가 작동 중지 된 노드에서 실행 된 트랜잭션의 상태를 다시 작성하는 것입니다.
롤링 재시작을 사용하여이 값을 변경할 수 있지만 실행중인 클러스터의 트래픽은 발생하는 트랜잭션이 신구 중 낮은 수준을 넘지 않는 정도로해야합니다.
기본값은 4096입니다
MaxNoOfConcurrentOperations
Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 integer 32K 32 - 4294967039 (0xFFFFFEFF) N 이 매개 변수의 값은 트랜잭션의 수와 크기에 맞게 조정하는 것이 좋습니다. 약간 조작과 레코드 만 관여하지 않는 트랜잭션을 실행하는 경우 일반적으로이 매개 변수의 기본값으로 충분합니다. 많은 레코드가 참여하는 대규모 트랜잭션을 수행하는 경우 일반적으로 그 값을 늘려야합니다.
클러스터 데이터를 업데이트하는 각 트랜잭션은 트랜잭션 코디네이터와 실제 업데이트가 실행되는 노드 모두에서 레코드가 유지됩니다. 이러한 레코드에는 롤백, 잠금 큐 및 기타 목적에 사용하는 Undo 레코드를 찾기 위해 필요한 상태 정보가 포함되어 있습니다.
이 매개 변수는 최소한 트랜잭션에서 동시에 업데이트되는 레코드의 수를 클러스터 데이터 노드의 수로 나눈 값으로 설정하도록하십시오. 예를 들어, 4 개의 데이터 노드가 클러스터에서 트랜잭션을 사용하여 100 만건의 병렬 업데이트를 처리 할 것으로 예상되는 경우에는이 값을 1000000/4 = 250000로 설정합니다. 장애 복구 능력을 제공 할 수 있도록이 매개 변수를 각 데이터 노드에서 노드 그룹의 부하를 처리 할 수있는 충분한 크기의 값으로 설정할 것을 권장합니다. 즉,
병렬 작업의 총 수 / 노드 그룹의 수
와 같은 값으로 설정하도록하십시오. (노드 그룹이 하나의 경우 이것은 전체 클러스터의 병렬 작업의 총 수와 동일합니다.)각 트랜잭션은 항상 하나의 조작이 관여하고 있기 때문에
MaxNoOfConcurrentOperations
값은 항상MaxNoOfConcurrentTransactions
값 이상합니다.잠금을 설정하는 읽기 쿼리도 작업 레코드가 생성됩니다. 노드 사이의 분포가 완전하지 않은 경우에 대응할 수 있도록 각 노드에 어느 정도의 추가 공간이 할당됩니다.
쿼리에 고유 해시 인덱스가 사용되면 실제로 트랜잭션의 레코드 당 2 개의 작업 레코드가 사용됩니다. 첫 번째 레코드는 인덱스 테이블의 읽기를 나타내며, 두 번째는 기본 테이블에 대한 작업을 처리합니다.
기본값은 32768입니다.
이 매개 변수는 실제로는 개별적으로 구성 할 수있는 두 가지 값을 처리합니다. 이들 중 첫 번째는 트랜잭션 코디네이터에 의해 배치하는 작업 레코드 수를 지정합니다. 두 번째 부분은 데이터베이스에 로컬로 저장하는 작업 레코드 수를 지정합니다.
8 노드 클러스터에서 실행되는 매우 큰 트랜잭션은 그 트랜잭션에 참여하는 읽기, 업데이트 및 삭제와 같은 수의 작업 레코드가 트랜잭션 코디네이터에 필요합니다. 그러나 이러한 작업 레코드는 8 개의 노드에 분산되어 있습니다. 따라서 하나의 매우 큰 거래를 위해 시스템을 구성 할 필요가있는 경우,이 두 부분을 따로 구성하는 것이 좋습니다.
MaxNoOfConcurrentOperations
는 항상 노드의 트랜잭션 코디네이터 부분 작업 레코드 수를 계산하는 데 사용됩니다.작업 레코드 메모리 요구 사항을 고려하는 것도 중요합니다. 이들은 레코드 당 약 1K 바이트를 소모합니다.
MaxNoOfLocalOperations
Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 integer UNDEFINED 32 - 4294967039 (0xFFFFFEFF) N 기본적으로이 매개 변수는 1.1 *
MaxNoOfConcurrentOperations
으로 계산됩니다. 이것은 많은 동시 트랜잭션을 포함하고, 그 모두가 대규모가 아닌 시스템에 적합합니다. 한 번에 하나의 매우 큰 트랜잭션이 실행되어 다수의 노드가있는 경우이 매개 변수를 명시 적으로 지정하고 기본을 무시하는 것이 좋습니다.MaxDMLOperationsPerTransaction
Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 operations (DML) 4294967295 32 - 4294967295 N 이 매개 변수는 트랜잭션의 크기를 제한합니다. 이것은보다 많은 DML 작업이 필요할 경우 트랜잭션이 중단됩니다. 트랜잭션 당 최소 조작 수는 32이지만,
MaxDMLOperationsPerTransaction
를 0으로 설정하면 트랜잭션 당 DML 작업의 수에 대한 제한을 해제 할 수 있습니다. 최대 (디폴트)은 4294967295입니다.트랜잭션의 임시 저장소 다음의 일련의
[ndbd]
매개 변수는 클러스터 트랜잭션의 일부인 문 실행시 임시 저장소를 결정하는 데 사용됩니다. 이 문이 완료되고 클러스터가 커밋 또는 롤백을 대기하고있을 때, 모든 레코드가 해제됩니다.이러한 매개 변수의 기본값은 대부분의 상황에 적합합니다. 그러나 많은 수의 행 또는 조작이 관여하는 트랜잭션을 지원해야하는 경우 값을 늘려 시스템의 병렬성을 높일 필요가있을 수 있습니다. 한편, 비교적 작은 트랜잭션을 필요로하는 응용 프로그램은이 값을 줄여 메모리를 절약 할 수 있습니다.
MaxNoOfConcurrentIndexOperations
Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 integer 8K 0 - 4294967039 (0xFFFFFEFF) N 고유 해시 인덱스를 사용하는 쿼리는 쿼리의 실행 단계에서 다른 임시 작업 레코드 세트가 사용됩니다. 이 매개 변수는 레코드 풀의 크기를 설정합니다. 따라서이 레코드는 쿼리의 일부를 실행하는 동안에 만 할당됩니다. 이 부분의 실행이 완료된 직후에 레코드가 해제됩니다. 중지와 커밋을 처리하는 데 필요한 상태에서는 정상 작동 레코드가 처리 된 풀 크기는
MaxNoOfConcurrentOperations
파라미터로 설정됩니다.이 매개 변수의 기본값은 8192입니다. 고유 해시 인덱스를 사용하여 매우 높은 병렬성을 실현시키는 드문 경우에만이 값을 늘려야합니다. 클러스터에 높은 수준의 병렬 처리가 필요하지 않은 DBA가 확신하는 경우 작은 값을 사용하여 메모리를 절약 할 수 있습니다.
MaxNoOfFiredTriggers
Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 integer 4000 0 - 4294967039 (0xFFFFFEFF) N MaxNoOfFiredTriggers
의 기본값은 4000입니다. 대부분의 상황에서는 이것으로 충분합니다. 경우에 따라서는 클러스터에 병렬성은 그다지 필요 없다고 DBA가 확신하는 경우 값을 줄일 수 있습니다.고유 해시 인덱스에 영향을주는 작업을 수행 할 때 레코드가 생성됩니다. 고유 해시 인덱스를 사용하여 테이블의 레코드를 삽입 또는 삭제하거나 고유 한 해시 인덱스의 일부인 열을 업데이트 할 때 인덱스 테이블에서 삽입 또는 삭제가 발생합니다. 생성 된 레코드는이 인덱스 테이블 작업을 발생시킨 원래 작업의 완료를 기다리는 동안 인덱스 테이블 조작을 나타내는 데 사용됩니다. 이 작업은 단기간이지만, 고유의 해시 인덱스 세트를 포함한 기본 테이블에 대해 다수의 병렬 쓰기 작업이 이루어지는 상황에서 레코드 풀에 많은 레코드를 필요로 할 수 있습니다.
TransactionBufferMemory
Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 bytes 1M 1K - 4294967039 (0xFFFFFEFF) N 이 매개 변수의 영향을받는 메모리는 인덱스 테이블의 업데이트와 고유 인덱스를 읽을 때 발생하는 작업을 추적하는 데 사용됩니다. 이 메모리는 이러한 조작 키 및 컬럼 정보를 저장하는 데 사용됩니다. 이 매개 변수의 값을 기본값에서 변경할 필요가있는 것은 매우 드문 경우뿐입니다.
TransactionBufferMemory
의 기본값은 1M 바이트입니다.일반적인 읽기 및 쓰기 작업에서도 비슷한 버퍼가 사용되지만 그 사용 기간은 더 짧아집니다. 컴파일시의 파라미터
ZATTRBUF_FILESIZE
(ndb/src/kernel/blocks/Dbtc/Dbtc.hpp
에 있습니다)은 4000 * 128 바이트 (500K 바이트)로 설정되어 있습니다. 키 정보의 유사한 버퍼ZDATABUF_FILESIZE
(이것도Dbtc.hpp
에 있습니다)은 4000 * 16 = 62.5K 바이트의 버퍼 공간이 포함되어 있습니다.Dbtc
트랜잭션의 조정을 취급하는 모듈입니다.스캔 및 버퍼링 (
ndb/src/kernel/blocks/Dblqh/Dblqh.hpp
의)Dblqh
모듈은 읽기 및 업데이트에 영향을 미치는 추가[ndbd]
매개 변수가 있습니다. 여기에는 기본적으로 10000 * 128 바이트 (1250K 바이트)로 설정되는ZATTRINBUF_FILESIZE
와 기본적으로 10000 * 16 바이트 (약 156K 바이트)의 버퍼 공간에 설정되는ZDATABUF_FILE_SIZE
가 포함되어 있습니다. 지금까지 이러한 컴파일시 제한 중 하나를 늘릴 것을 나타내는 사용자의보고 또는 당사의 대규모 테스트의 결과가 없습니다.
MaxNoOfConcurrentScans
Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 integer 256 2 - 500 N 이 매개 변수는 클러스터에서 실행할 수있는 병렬 스캔의 수를 제어하는 데 사용됩니다. 각 트랜잭션 코디네이터는이 매개 변수에 정의 된 수의 병렬 스캔을 할 수 있습니다. 각 검색 쿼리는 모든 파티션을 병렬로 스캔 실행됩니다. 각 파티션 스캔은 파티션이 배치되는 노드의 스캔 레코드가 사용됩니다. 레코드 수는이 파라미터 값에 노드의 수를 곱한 값입니다. 클러스터는 클러스터의 모든 노드에서 동시에 발생한
MaxNoOfConcurrentScans
개의 스캔을 유지할 수 있습니다.스캔은 실제로 두 가지 경우에 실행됩니다. 이들 중 첫 번째 케이스는 쿼리를 처리하기위한 해시 또는 정렬 된 인덱스가 존재하지 않을 때 발생합니다. 이 경우 전체 테이블 스캔을 실행하면 쿼리가 실행됩니다. 두 번째 사례는 쿼리를 지원하는 해시 인덱스가 존재하지 않고 정렬 된 인덱스가 존재하는 경우에 발생합니다. 정렬 된 인덱스의 사용은 병렬 범위 스캔의 실행을 의미합니다. 이 순서는 로컬 파티션에서만 유지되므로, 모든 파티션에서 인덱스 스캔을 수행해야합니다.
MaxNoOfConcurrentScans
의 기본값은 256입니다. 최대 값은 500입니다.MaxNoOfLocalScans
Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 integer [see text] 32 - 4294967039 (0xFFFFFEFF) N 많은 검사가 완전히 병렬화되어 있지 않은 경우의 로컬 스캔 레코드 수를 지정합니다. 로컬 스캔 레코드 수를 지정하지 않은 경우에는 다음과 같이 계산됩니다.
4 *
MaxNoOfConcurrentScans
* [# data nodes] + 2최소값은 32입니다.
BatchSizePerLocalScan
Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 integer 256 1 - 992 N 이 매개 변수는 병렬 스캔 작업을 처리하는 데 사용되는 잠금 레코드 수를 계산하는 데 사용됩니다.
BatchSizePerLocalScan
은 SQL 노드로 정의되는BatchSize
과 깊은 관계가 있습니다.LongMessageBuffer
Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 bytes 64M 512K - 4294967039 (0xFFFFFEFF) N NDB 7.3.1 bytes 4M 512K - 4294967039 (0xFFFFFEFF) N NDB 7.3.5 bytes 64M 512K - 4294967039 (0xFFFFFEFF) N 이것은 개별 노드와 노드간에 메시지를 전달하는 데 사용되는 내부 버퍼입니다. 기본은 64M 바이트입니다. (MySQL Cluster NDB 7.3.5 이전에는, 이것은 4M 바이트였습니다.)
대부분의 경우이 매개 변수를 기본값에서 변경할 필요가 없습니다
.
MaxParallelScansPerFragment
Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 bytes 256 1 - 4294967039 (0xFFFFFEFF) N 순차 처리의 대기가 시작되기 전에 허용되는 병렬 스캔 (
TUP
스캔 및TUX
스캔)의 최대 수를 구성 할 수 있습니다. 이것을 늘려 다수의 스캔을 병렬로 실행할 때 사용되지 않는 CPU를 이용하여 성능을 향상시킬 수 있습니다.MySQL Cluster NDB 7.3 이상에서는이 매개 변수의 기본값은 256입니다.
메모리 할당
MaxAllocate
Effective Version | Type/Units | Default | Range/Values | Restart Type |
---|---|---|---|---|
NDB 7.3.0 | unsigned | 32M | 1M - 1G | N |
이것은 테이블에 대한 메모리를 할당 할 때 사용하는 메모리 유닛의 최대 크기입니다. NDB
에서 Out of memory 오류가 발생했지만 클러스터 로그 또는 DUMP 1000
( DUMP 1000 을 참조하십시오)의 출력을 보면 사용 가능한 모든 메모리가 아직 사용되지 않는 것이 명백한 경우 이 매개 변수 (또는 MaxNoOfTables
또는 둘 다)의 값을 늘리면 NDB
가 충분한 메모리를 사용할 수있게됩니다
해시 맵 크기
DefaultHashMapSize
Effective Version | Type/Units | Default | Range/Values | Restart Type |
---|---|---|---|---|
NDB 7.3.0 | LDM threads | 3840 | 0 - 3840 | N |
MySQL Cluster NDB 7.2.7 이상에서는 이전 릴리스 (240)보다 큰 테이블 해시 맵의 기본 크기 (3840)가 사용됩니다. MySQL Cluster NDB 7.2.11 이후 버전에서는이 매개 변수를 사용하여 NDB
가 사용하는 테이블 해시 맵의 크기를 구성 할 수 있습니다 (이전에는이 값은 하드 코딩되어있었습니다). DefaultHashMapSize
에는 3 개의 값 (0,240,3840) 중 하나를 지정할 수 있습니다. 이러한 값과 그 효과에 대해 다음 표에서 설명합니다.
Value | Description / Effect |
---|---|
0 | 클러스터의 모든 데이터 및 API 노드에서이 매개 변수에 설정된 가장 작은 값을 (있으면) 사용합니다. 어떤 데이터 또는 API 노드에 설정되어 있지 않으면 기본값을 사용합니다 |
240 | MySQL Cluster NDB 7.2.7 이전의 모든 MySQL Cluster 릴리스에서 기본적으로 사용되어 원래 해시 맵 크기입니다. |
3840 | MySQL Cluster NDB 7.2.7 이상에서 기본적으로 사용되는 더 큰 해시 맵 크기 |
이 매개 변수의 주된 용도는 더 큰 해시 맵 사이즈 (3840)가 기본 인 MySQL
Cluster NDB 7.2.7 이후의 MySQL Cluster 버전과 이전 버전 (기본이 240이었다) 사이의 업그레이드와
(특히 ) 다운 그레이드를 용이하게하는 것입니다. 이것은이 변경 호환성이없는 (Bug # 14800539) 때문입니다. 이 매개 변수를 240으로 설정하고이 값을 사용하는 이전 버전에서 업그레이드를 실행하면 클러스터는 테이블 해시 맵에 이어 작은 크기를 사용하기 위해 업그레이드 된 테이블에서 이전 버전 호환성이 유지됩니다. DefaultHashMapSize
는 개별 데이터 노드 API 노드 또는 둘 모두에 설정할 수 있지만, config.ini
파일의 [ndbd default]
섹션에 한 번만 설정하는 방법을 권장합니다.
이 매개 변수를 늘린 후 기존 테이블에 새로운 크기를 사용하려면 해당 테이블에 ALTER TABLE ... REORGANIZE PARTITION
을 실행합니다. 그런 다음 테이블에서 더 큰 해시 맵 크기를 사용할 수있게됩니다. 이것은 롤링 재시작 실행 이외에합니다. 롤링 재시작을 수행하면 더 큰 해시 맵을 새로운 테이블로 사용 할 수 있지만, 기존의 테이블에서는 사용할 수 없습니다.
DefaultHashMapSize
을 3840으로 설정하여 테이블을 생성하거나 수정 한 후 온라인으로이 매개 변수를 줄이는 방법은 현재 지원되지 않습니다.
로깅 및 체크 포인트 다음 [ndbd]
파라미터는 로그와 체크 포인트의 동작을 제어합니다.
NoOfFragmentLogFiles
Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 integer 16 3 - 4294967039 (0xFFFFFEFF) IN 이 매개 변수는 노드의 Redo 로그 파일의 수 (즉, Redo 로그에 할당 된 공간의 양)을 설정합니다. Redo 로그 파일은 링 형태로 구성되기 때문에 세트의 처음과 마지막 로그 파일 (각각 " head " 와 " tail " 로그 파일이라고도 함)이 교차하지 않는 것이 매우 중요합니다. 이들이 서로 다가 너무 새 로그 레코드를 추가 할 여유가 없기 때문에 노드는 업데이트를 포함한 모든 트랜잭션을 중단하기 시작합니다.
Redo
로그 레코드가 삽입 된 후 필요한만큼의 로컬 체크 포인트가 완료 될 때까지 삭제되지 않습니다. (MySQL Cluster NDB 7.3 이상에서는 2 개의 로컬 체크 포인트 만 필요). 체크 포인트의 빈도는이 장에서 별도로 설명하는 특정 구성 매개 변수 세트에 의해 결정됩니다.기본 매개 변수 값은 16입니다. 이것은 기본적으로 16M 바이트의 파일 4 개가 16 세트 (총 1024M 바이트) 있음을 의미합니다. 개별 로그 파일의 크기는
FragmentLogFileSize
매개 변수를 사용하여 구성 할 수 있습니다. 많은 업데이트가 필요한 시나리오에서는 Redo 로그에 충분한 공간을 제공하기 위해,NoOfFragmentLogFiles
값을 300 이상으로 설정해야하는 경우가 있습니다.체크 포인트가 늦게 데이터베이스에 기록이 많기 때문에 로그 파일이 가득 복구에 영향을주지 않고 로그의 끝을 절단 할 수없는 경우 모든 업데이트 트랜잭션이 내부 오류 코드 410
"Out of log file space temporarily "
에 의해 중지됩니다. 이 상태는 체크 포인트가 완료 비상 로그 전에 이동할 수있을 때까지 계속됩니다.중요이 매개 변수는 " 실행 중 " 변경할 수 없습니다.
--initial
을 사용하여 노드를 다시 시작해야합니다. 실행중인 클러스터의 모든 데이터 노드에이 값을 변경할 필요가있는 경우 (각 데이터 노드를 시작할 때--initial
을 사용하여) 노드의 롤링 재시작을 사용합니다.FragmentLogFileSize
Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 bytes 16M 4M - 1G IN 이 매개 변수를 설정하면 Redo 로그 파일의 크기를 직접 제어 할 수 있습니다. 이것은 MySQL Cluster가 부하가 높은 상태에서 실행하고 조각 로그 파일을 닫을 때까지 시간이 걸려 새로운 파일을 열 수 없습니다. (한 번에 열 조각 로그 파일은 2 개 뿐이다) 경우에 편리합니다. 조각 로그 파일의 크기를 늘리면 클러스터에서 새로운 조각 로그 파일을 열어야까지의 시간이 길어집니다. 이 매개 변수의 기본값은 16M입니다.
조각 로그 파일의 자세한 내용은
NoOfFragmentLogFiles
의 설명을 참조하십시오.InitFragmentLogFiles
Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 [see values] SPARSE SPARSE, FULL IN 기본적으로 데이터 노드의 초기 부팅 실행시 조각 로그 파일이 띄엄 띄엄 생성됩니다. 즉, 사용하는 운영 체제 및 파일 시스템은 반드시 모든 바이트가 디스크에 기록되는 것은 아닙니다. 그러나이 매개 변수를 사용하면 사용되는 플랫폼과 파일 시스템의 유형에 관계없이이 동작을 재정의하고 모든 바이트가 강제적으로 기입하도록 설정할 수 있습니다.
InitFragmentLogFiles
는 두 값 중 하나를 취합니다.운영 체제 및 파일 시스템에서는SPARSE
. 조각 로그 파일이 띄엄 띄엄 작성됩니다. 이것은 기본값입니다.FULL
. 조각 로그 파일의 모든 바이트가 강제로 디스크에 기록됩니다.
InitFragmentLogFiles = FULL
를 설정하는 것으로, Redo 로그에 기록 할 때 I / O 오류가 해결 될 수 있습니다MaxNoOfOpenFiles
Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 unsigned 0 20 - 4294967039 (0xFFFFFEFF) N 이 매개 변수는 열린 파일에 할당 내부 스레드 수의 상한을 설정합니다. 이 매개 변수의 변경이 필요한 상황이 발생했을 경우, 그것을 버그로보고하도록하십시오 .
기본값은 0입니다.그러나이 매개 변수에 설정할 수있는 최소값은 20입니다.
InitialNoOfOpenFiles
Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 files 27 20 - 4294967039 (0xFFFFFEFF) N 이 매개 변수는 열린 파일에 할당 초기 내부 스레드 수를 설정합니다.
기본값은 27입니다.
MaxNoOfSavedMessages
Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 integer 25 0 - 4294967039 (0xFFFFFEFF) N 이 매개 변수는 이전 파일을 덮어 쓰기 전에 유지되는 추적 파일의 최대 개수를 설정합니다. 추적 파일은 어떤 이유로 노드가 충돌 할 때 생성됩니다.
기본값은 25 개의 추적 파일입니다
MaxLCPStartDelay
Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 seconds 0 0 - 600 N 데이터 노드의 병렬 복구는 사실 테이블 데이터 만 병렬로 복사되고 동기화됩니다. 사전 정보와 체크 포인트 정보 등의 메타 데이터의 동기화는 순차적으로 이루어집니다. 또한 사전 및 체크 포인트 정보 복구는 로컬 체크 포인트의 실행과 병렬로 실행할 수 없습니다. 즉, 많은 데이터 노드를 동시에 시작하거나 다시 시작 할 때 데이터 노드가 로컬 체크 포인트를 실행하는 동안 기다려야 노드 복구 시간이 길어질 수 있습니다.
더 (경우에 따라서는 모든) 데이터 노드에서 메타 데이터의 동기화를 완료 할 수 있도록 로컬 체크 포인트의 지연을 강제 할 수 있습니다. 각 데이터 노드에서 메타 데이터 동기화가 완료된 후에는 로컬 체크 포인트의 실행 중에도 모든 데이터 노드에 병렬로 테이블 데이터를 복구 할 수 있습니다. 이러한 지연을 강제하려면
MaxLCPStartDelay
을 설정합니다. 이것은 데이터 노드에서 메타 데이터의 동기화가 계속되고있는 동안 클러스터가 로컬 체크 포인트의 시작을 기다리는 초 수를 결정합니다. 이 매개 변수는 모든 데이터 노드에서 동일하도록config.ini
파일의[ndbd default]
섹션에 설정하도록하십시오. 최대 값은 600, 기본값은 0입니다.LcpScanProgressTimeout
Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.3 second 60 0 - 4294967039 (0xFFFFFEFF) N 로컬 체크 포인트의 조각 스캔 워치 독은 로컬 체크 포인트의 일부로 실행되는 각 조각 스캔이 진행되고 있는지 정기적으로 확인하고 특정 시간이 경과해도 진행하지 않으면 그 노드를 종료합니다. MySQL Cluster NDB 7.3.3 이전에는이 간격은 60 초였습니다 (Bug # 16630410). MySQL Cluster NDB 7.3.3 이상에서
LcpScanProgressTimeout
데이터 노드 구성 매개 변수를 사용하여이 간격을 설정할 수 있습니다. 이것은 LCP의 조각 스캔 워치 독 노드가 종료되기 전에 로컬 체크 포인트의 정체가 허용되는 최대 시간을 설정합니다.기본값은 60 초입니다 (이전 릴리스와의 호환성이 있습니다). 이 매개 변수를 0으로 설정하면 LCP의 조각 스캔 워치 독을 완전히 비활성화됩니다.
메타 데이터 오브젝트 다음의 일련의
[ndbd]
매개 변수는 인덱스, 이벤트 및 클러스터 간 복제에 사용되는 속성 테이블, 인덱스 및 트리거 오브젝트의 최대 개수를 정의하는 데 사용되는 메타 데이터 개체 풀 크기를 정의합니다. 이들은 클러스터에 대한 ' 추천 ' 역할 만하며, 지정되지 않은 것은 모두 표시된 기본값으로 돌아갑니다.
MaxNoOfAttributes
Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 integer 1000 32 - 4294967039 (0xFFFFFEFF) N 이 매개 변수는 클러스터 정의 할 수있는 속성의 최대 권장 개수를 설정합니다.
MaxNoOfTables
뿐만 아니라 엄격한 제한의 역할을위한 것이 아닙니다.(오래된 MySQL Cluster 릴리스에서는이 매개 변수는 특정 작업에 대한 엄격한 제한으로 간주 할 수있었습니다.이 때문에 MySQL Cluster 복제에 복제 할 수 이상의 테이블을 만들 때 문제가 발생하고
MaxNoOfAttributes
를 보다 많은 속성을 만든 (상황에 따라 할 수없는) 때 혼란을 초래할 수있었습니다.)기본값은 1000입니다. 지정 가능한 최소 값은 32입니다. 최대는 4294967039입니다. 모든 메타 데이터가 서버에서 완전히 복제되기 때문에 각 속성은 노드 당 200 바이트 정도의 스토리지를 소비합니다.
MaxNoOfAttributes
를 설정할 때 향후 실행 가능성이있는ALTER TABLE
문을 사전에 준비하는 것이 중요합니다. 이것은 클러스터 테이블에서ALTER TABLE
을 실행하는 동안 원래의 테이블에 포함 된 3 배나 많은 특성이 사용되기 때문이고,이 숫자의 2 배를 허용하는 것이 좋습니다. 예를 들어, 속성의 수가 가장 많다 (greatest_number_of_attributes
) MySQL Cluster 테이블에 100 개의 속성이있는 경우,MaxNoOfAttributes
의 적절한 초기 값은6 *
입니다.greatest_number_of_attributes
= 600또한 테이블 당 평균 속성 수를 예측하고 그것에
필요한 모든 테이블이 성공적으로 만들 수 있다고 가정하여 매개 변수를 구성한 후 실제로MaxNoOfTables
를 바르기도 좋습니다. 이 값이 이전 단락에서 얻어진 값보다 크면 큰 값을 사용하도록하십시오.ALTER TABLE
을 시도하고이 수가 충분한 지 확인하도록하십시오. 이것이 성공하지 못한 경우MaxNoOfAttributes
를 더MaxNoOfTables
만큼 늘려 다시 테스트하십시오MaxNoOfTables
Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 integer 128 8 - 20320 N 테이블 개체는 클러스터의 각 테이블 및 고유 해시 인덱스마다 할당됩니다. 이 매개 변수는 클러스터 전체의 테이블 오브젝트의 최대 권장 개수를 설정합니다.
MaxNoOfAttributes
뿐만 아니라 엄격한 제한의 역할을위한 것이 아닙니다.(오래된 MySQL Cluster 릴리스에서는이 매개 변수는 특정 작업에 대한 엄격한 제한으로 간주 할 수있었습니다.이 때문에 MySQL Cluster 복제에 복제 할 수 이상의 테이블을 만들 때 문제가 발생하고
MaxNoOfTables
을 개 이상의 테이블을 만든 (상황에 따라 할 수없는) 때 혼란을 초래할 수있었습니다.)BLOB
데이터 형식의 각 속성은BLOB
데이터의 대부분을 저장하기 위해 추가 테이블이 사용됩니다. 테이블의 총 수를 정의 할 때 이러한 테이블도 고려할 필요가 있습니다.이 매개 변수의 기본값은 128입니다. 최소값은 8, 최대 값은 20320입니다. 각 테이블 객체는 노드 당 약 20K 바이트를 소모합니다.
참고MaxNoOfTables
,MaxNoOfOrderedIndexes
및MaxNoOfUniqueHashIndexes
의 합계가2 32 - 2
(4294967294)를 초과하지 않도록해야합니다.MaxNoOfOrderedIndexes
Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 integer 128 0 - 4294967039 (0xFFFFFEFF) N 클러스터의 정렬 된 인덱스에 대해 인덱스 된 내용과 스토리지 세그먼트를 기술하는 객체가 할당됩니다. 기본적으로 그렇게 정의 된 각 인덱스에 따라 정렬 된 인덱스도 정의됩니다. 개별 고유 인덱스 및 기본 키는 정렬 된 인덱스와 해시 인덱스가 모두 포함되어 있습니다.
MaxNoOfOrderedIndexes
은 시스템에서 한 번에 사용할 수있는 순서화 된 인덱스의 총 수를 설정합니다.이 매개 변수의 기본값은 128입니다. 각 인덱스 객체는 노드 당 약 10K 바이트의 데이터를 소비합니다.
참고MaxNoOfTables
,MaxNoOfOrderedIndexes
및MaxNoOfUniqueHashIndexes
의 합계가2 32 - 2
(4294967294)를 초과하지 않도록해야합니다.MaxNoOfUniqueHashIndexes
Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 integer 64 0 - 4294967039 (0xFFFFFEFF) N 기본 키가 아닌 개별 고유 인덱스는 고유 키를 인덱스 된 테이블의 기본 키에 매핑하는 전용 테이블이 할당됩니다. 기본적으로 개별 고유 인덱스에 정렬 된 인덱스도 정의됩니다. 이것을 금지하려면 고유 인덱스를 정의 할 때
USING HASH
옵션을 지정해야합니다.기본값은 64입니다. 각 인덱스는 노드 당 약 15K 바이트를 소모합니다.
참고MaxNoOfTables
,MaxNoOfOrderedIndexes
및MaxNoOfUniqueHashIndexes
의 합계가2 32 - 2
(4294967294)를 초과하지 않도록해야합니다.MaxNoOfTriggers
Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 integer 768 0 - 4294967039 (0xFFFFFEFF) N 개별 고유 해시 인덱스는 내부 업데이트, 삽입 및 삭제 트리거가 할당됩니다. (이것은 고유 해시 인덱스마다 3 개의 트리거가 생성되는 것을 의미합니다.) 그러나 정렬 된 인덱스에 필요한 트리거 객체는 1 개뿐입니다. 백업에서 클러스터의 보통 테이블마다 3 개의 트리거 오브젝트가 사용됩니다.
클러스터 간의 복제에서도 내부 트리거가 사용됩니다.
이 매개 변수는 클러스터 내의 트리거 오브젝트의 최대 개수를 설정합니다.
기본값은 768입니다.
MaxNoOfIndexes
이 매개 변수는 사용되지 않으며, MySQL Cluster의 향후 버전에서 제거 될 예정입니다. 대신
MaxNoOfOrderedIndexes
및MaxNoOfUniqueHashIndexes
을 사용하도록하십시오.이 매개 변수는 고유 해시 인덱스에서만 사용됩니다. 클러스터에 정의 된 고유 해시 인덱스 당 하나의 레코드가이 풀에 존재해야합니다.
이 매개 변수의 기본값은 128입니다.
MaxNoOfSubscriptions
Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 unsigned 0 0 - 4294967039 (0xFFFFFEFF) N 일부 NDB API 응용 프로그램에서는이 매개 변수의 변경이 필요하거나 바람직한 경우가 있습니다. 그러나 SQL 노드 역할을하는 MySQL 서버를 정상적으로 사용하려면 이렇게 필요가 없습니다.
MaxNoOfSubscriptions
의 기본값은 0입니다. 이것은MaxNoOfTables
와 등가로 취급됩니다. 각 구독은 108 바이트를 소비합니다.MaxNoOfSubscribers
Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 unsigned 0 0 - 4294967039 (0xFFFFFEFF) N 이 매개 변수는 MySQL Cluster 복제 사용시에만 관련이 있습니다. 기본값은 0입니다.이것은
2 * MaxNoOfTables
로 처리됩니다. 즉, 2 개의 MySQL 서버 (하나는 복제 마스터 역할을하고 다른 하나는 슬레이브로 작동합니다) 각각에 대해NDB
테이블 당 하나의 구독이 있습니다. 각 가입자는 16 바이트의 메모리를 사용합니다.순환 복제 다중 마스터 복제 및 3 개 이상의 MySQL 서버가 관여하는 다른 복제 설정을 사용하는 경우에는이 매개 변수를 복제에 포함 된 mysqld 프로세스 수 (이것은 보통 (항상은 아니지만) 클러스터 수와 같습니다)까지 늘리도록하십시오. 예를 들어, 3 개의 MySQL Cluster를 사용하는 순환 복제 설정이 하나의 mysqld 가 각 클러스터에 연결된 이러한 mysqld 프로세스가 각각 마스터 및 슬레이브로 작동하는 경우
MaxNoOfSubscribers
을3 * MaxNoOfTables
로 설정하도록 하십시오.자세한 내용은 섹션 18.6 "MySQL Cluster 복제" 를 참조하십시오.
MaxNoOfConcurrentSubOperations
Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 unsigned 256 0 - 4294967039 (0xFFFFFEFF) N 이 매개 변수는 클러스터의 모든 API 노드가 한 번에 수행 할 수있는 작업 수의 상한을 설정합니다. 정상 작동시 기본값 (256)으로 충분하지만, API 노드가 다수있어, 각각이 대량의 작업을 동시에 실행하는 시나리오에서만 조정이 필요할 수 있습니다.
boolean 매개 변수 데이터 노드의 동작은 boolean 값을 가지고 일련의
[ndbd]
매개 변수에도 영향됩니다. 이러한 매개 변수는TRUE
로 지정하는 경우는1
또는Y
로 설정하고FALSE
로 지정하는 경우는0
또는N
으로 설정합니다.
LateAlloc
Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 numeric 1 0 - 1 N 관리 서버에 연결이 된 후에,이 데이터 노드의 메모리를 할당합니다. 기본적으로 활성화.
LockPagesInMainMemory
Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 numeric 0 0 - 2 N Solaris와 Linux를 포함한 여러 운영 체제에서는 프로세스를 메모리에 고정하면 디스크에 스왑을 피할 수 있습니다. 이것을 사용하면 클러스터의 실시간 특성을 보장하기 쉽습니다.
이 매개 변수는 정수 값
0
,1
또는2
중 하나를 취합니다. 이러한 기능을 다음의 목록입니다.0
: 잠금을 해제합니다. 이것은 기본값입니다.1
: 프로세스의 메모리를 할당 한 후에 잠금을 실행합니다.2
: 프로세스의 메모리를 할당하기 전에 잠금을 실행합니다.
권한이없는 사용자가 페이지를 잠글 수 있도록 운영 체제가 구성되어 있지 않은 경우이 매개 변수를 사용하는 데이터 노드 프로세스를 시스템의 root로 실행해야 할 수 있습니다. (
LockPagesInMainMemory
는mlockall
함수가 사용됩니다 .Linux kernel 2.6.9 이후에서는 권한이없는 사용자가max locked memory
제한에 따라 메모리를 잠글 수 있습니다. 자세한 내용은 ulimit -l 및 http : //linux.die .net / man / 2 / mlock 을 참조하십시오).참고이전 MySQL Cluster 릴리스에서는이 매개 변수는 boolean이었습니다. 기본 설정 인
0
또는false
는 잠금이 해제되었습니다.1
또는true
는 프로세스의 메모리가 할당 한 후에 잠금이 활성화되었습니다. MySQL Cluster NDB 7.3 이상에서는이 매개 변수의 값으로true
또는false
를 사용하면 오류로 처리됩니다.중요glibc
2.10 이상에서는glibc
가 공유 풀에서 잠금 경합을 줄이기 위해 스레드 단위 경기장을 사용하고이를 통해 실제 메모리가 소비됩니다. 일반적으로 데이터 노드 프로세스는 부팅 후 메모리 할당을 수행하지 않기 때문에 스레드 단위 경기장을 필요로하지 않습니다. (이 할당의 차이가 성능에 심각한 영향을 미칠 수는 없습니다.)이
glibc
의 동작은MALLOC_ARENA_MAX
환경 변수를 사용하여 구성 할 수있게되어 있습니다 만,glibc
2.16 이전 버전에서는이 메커니즘의 버그 때문에이 변수를 8 미만으로 설정할 수 없기 때문에 낭비 된 메모리 을 재사용 할 수 없습니다. (Bug # 15907219이 문제의 자세한 내용은 http://sourceware.org/bugzilla/show_bug.cgi?id=13137 참조하십시오.)이 문제의 가능한 해결 방법은
LD_PRELOAD
환경 변수를 사용하여jemalloc
메모리 할당 라이브러리를 탑재하고glibc
와 함께 제공되는 라이브러리 대신 사용하는 것입니다.StopOnError
Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 boolean 1 0, 1 N 이 매개 변수는 데이터 노드 프로세스에서 오류 조건이 발생했을 때 프로세스를 종료하거나 자동으로 다시 시작하거나 지정합니다.
이 매개 변수의 기본값은
1
입니다. 이것은 기본적으로 오류 발생시 데이터 노드 프로세스가 중지하는 것을 의미합니다.CrashOnCorruptedTuple
Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 boolean true true, false S 이 매개 변수를 사용하면 손상된 튜플이 검출 된 때 데이터 노드가 강제 종료됩니다. MySQL Cluster NDB 7.3 이상에서는 이것은 기본적으로 활성화되어 있습니다.
Diskless
Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 true|false (1|0) false true, false IS MySQL Cluster의 테이블을 디스크없는 로 지정할 수 있습니다. 이것은 테이블이 디스크에 체크 포인트되지 않고 로깅이 발생하지 않는 것을 의미합니다. 이러한 테이블은 메인 메모리에만 존재합니다. 디스크없는 테이블을 사용하면 충돌 발생시에 테이블도 테이블의 레코드도 삭제됩니다. 그러나 디스크없는 모드에서 작동 할 때 디스크없는 컴퓨터에서 ndbd 를 실행할 수 있습니다.
중요이 기능을 사용하면 클러스터 전체 가 디스크없는 모드에서 작동합니다.
이 기능을 사용하면 클러스터의 온라인 백업이 사용됩니다. 또한 클러스터의 부분 시작 수 없습니다.
Diskless
은 기본적으로 비활성화되어 있습니다.ODirect
Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 boolean false true, false N 이 매개 변수를 사용하면
NDB
가 LCP, 백업 및 Redo 로그에O_DIRECT
쓰려고 종종 kswapd 및 CPU 사용률이 떨어집니다. Linux에서 MySQL Cluster를 사용할 때 커널 2.6 이상을 사용하는 경우ODirect
을 사용하십시오.ODirect
은 기본적으로 비활성화되어 있습니다.RestartOnErrorInsert
Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 error code 2 0 - 4 N 이 기능은 코드의 각 블록을 테스트의 일부로 실행할 때 오류 삽입이 가능한 디버그 버전을 빌드하는 경우에만 사용할 수 있습니다.
이 기능은 기본적으로 비활성화되어 있습니다.
CompressedBackup
Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 boolean false true, false N 사용되는 압축은 gzip --fast 과 같으며 데이터 노드에서 비 압축 백업 파일의 저장에 필요한 공간의 50 % 이상을 절약 할 수 있습니다. 압축 백업은 개별 데이터 노드 또는 (
config.ini
파일의[ndbd default]
섹션에이 매개 변수를 설정하여) 모든 데이터 노드에서 활성화 할 수 있습니다.중요압축 백업이 기능을 지원하지 않는 MySQL 버전을 실행하는 클러스터로 복원 할 수 없습니다.
기본값은
0
(해제)입니다.CompressedLCP
Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 boolean false true, false N 이 매개 변수를
1
로 설정하면 로컬 체크 포인트가 압축됩니다. 사용되는 압축은 gzip --fast 과 같으며 데이터 노드에서 비 압축 체크 포인트 파일의 저장에 필요한 공간의 50 % 이상을 절약 할 수 있습니다. 압축 LCP는 개별 데이터 노드 또는 (config.ini
파일의[ndbd default]
섹션에이 매개 변수를 설정하여) 모든 데이터 노드에서 활성화 할 수 있습니다.중요압축 로컬 체크 포인트는이 기능을 지원하지 않는 MySQL 버전을 실행하는 클러스터로 복원 할 수 없습니다.
기본값은
0
(해제)입니다.
시간, 간격 및 디스크 페이징 제어
클러스터 데이터 노드의 다양한 동작 사이의 시간과 간격을 지정하는 몇 가지 [ndbd]
매개 변수가 있습니다. 대부분의 시간 제한 값은 밀리 초 단위로 지정합니다. 이 예외는 해당 부분에서 설명합니다.
TimeBetweenWatchDogCheck
Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 milliseconds 6000 70 - 4294967039 (0xFFFFFEFF) N 메인 스레드가 특정 시점에 무한 루프에 빠지는 것을 방지하기 위해 " 감시 " 스레드가 메인 스레드를 확인합니다. 이 매개 변수는 체크 사이의 밀리 초 단위로 지정합니다. 프로세스가 3 회 검사 후에도 동일한 상태의 경우, 감시 스레드는 프로세스를 종료합니다.
이 매개 변수는 실험 또는 로컬 상태에 따라 쉽게 변경할 수 있습니다. 이 노드 단위로 지정할 수 있지만 지정하는 경우는 거의 없습니다.
기본 시간은 6000 밀리 세컨드 (6 초)입니다TimeBetweenWatchDogCheckInitial
Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 milliseconds 6000 70 - 4294967039 (0xFFFFFEFF) N This is similar to the
TimeBetweenWatchDogCheck
parameter, except thatTimeBetweenWatchDogCheckInitial
controls the amount of time that passes between execution checks inside a database node in the early start phases during which memory is allocated.The default timeout is 6000 milliseconds (6 seconds).
StartPartialTimeout
Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 milliseconds 30000 0 - 4294967039 (0xFFFFFEFF) N 이것은
TimeBetweenWatchDogCheck
매개 변수와 거의 동일하지만TimeBetweenWatchDogCheckInitial
는 메모리 할당이 이루어지는 초기 시작 단계에서 데이터베이스 노드 내부의 실행 체크 사이에 경과 시간을 제어합니다.기본 시간은 6000 밀리 세컨드 (6 초)입니다
.
StartPartitionedTimeout
Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 milliseconds 60000 0 - 4294967039 (0xFFFFFEFF) N StartPartialTimeout
밀리 초 대기 후 클러스터를 시작할 수 상태도 아직 분할 된 상태의 가능성이있는 경우 클러스터는이 시간이 경과 할 때까지 기다립니다.StartPartitionedTimeout
를 0으로 설정하면 클러스터는 무기한 대기합니다.이 매개 변수는 클러스터의 초기 시작 또는 초기 재부팅을 수행 할 때 무시됩니다.
기본 시간 제한은 60000 밀리 초 (60 초)입니다.
StartFailureTimeout
Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 milliseconds 0 0 - 4294967039 (0xFFFFFEFF) N 데이터 노드에서이 매개 변수에 지정된 시간 내에 시작 시퀀스가 완료되지 않은 경우 노드의 시작은 실패합니다. 이 매개 변수를 0 (기본값)로 설정하면 데이터 노드의 제한은 적용되지 않습니다.
이 매개 변수는 0이 아닌 값은 밀리 초 단위로 측정됩니다. 많은 데이터를 포함한 데이터 노드에서는이 매개 변수를 늘리도록하십시오. 예를 들어, 수 기가 바이트의 데이터를 포함한 데이터 노드에서 노드를 다시 시작하는데 10 ~ 15 분 (즉, 600000-1000000 밀리 초)의 시간이 필요합니다.
StartNoNodeGroupTimeout
Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 milliseconds 15000 0 - 4294967039 (0xFFFFFEFF) N Nodegroup = 65536
에서 데이터 노드를 구성하면 해당 노드는 어떤 노드 그룹에 할당 할 수없는 것으로 간주됩니다. 이 경우 클러스터는StartNoNodegroupTimeout
밀리 초 기다렸다가 그러한 노드를--nowait-nodes
옵션에 전달 된 목록에 추가 된 것으로 간주 시작합니다. 기본값은15000
입니다 (즉, 관리 서버는 15 초 대기합니다). 이 매개 변수를0
으로 설정하면 클러스터는 무기한 대기합니다.StartNoNodegroupTimeout
는 클러스터의 모든 데이터 노드에서 동일해야합니다. 따라서 이것은 개별 데이터 노드가 아니라 항상config.ini
파일의[ndbd default]
섹션에 설정하도록하십시오.자세한 내용은 섹션 18.5.13 "MySQL Cluster 데이터 노드의 온라인 추가" 를 참조하십시오.
HeartbeatIntervalDbDb
Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 milliseconds 5000 10 - 4294967039 (0xFFFFFEFF) N 실패한 노드를 검출하는 주요 방법 중 하나는 하트 비트를 사용하는 것입니다. 이 매개 변수는 하트 비트 신호의 전송 횟수 것으로 예상된다 수신 횟수를 지정합니다. 3 회 연속 하트 비트 간격이 실패하면 그 노드는 데드가 선언됩니다. 따라서 하트 비트 메커니즘에 의한 고장 검출의 최대 시간은 하트 비트 간격의 4 배입니다.
MySQL Cluster NDB 7.3 이상에서는 기본 하트 비트 간격은 5000 밀리 초 (5 초)입니다. 이 매개 변수를 크게 변경하지 마십시오. 또한 노드 간의 차이가 크지 않도록하십시오. 노드가 5000 밀리 초를 사용하고 그것을 감시하는 노드가 1000 밀리 초를 사용하는 경우, 그 노드는 매우 빨리 데드가 선언됩니다. 이 매개 변수는 온라인 소프트웨어 업그레이드 중에 변경할 수 있지만 조금씩 늘리십시오.
네트워크 통신 대기 시간 도 참조하십시오.
HeartbeatIntervalDbApi
Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 milliseconds 1500 100 - 4294967039 (0xFFFFFEFF) N 각 데이터 노드는 각 MySQL 서버 (SQL 노드)에 하트 비트 신호를 전송하여 연결된 상태인지 확인합니다. MySQL 서버가 시간 내에 하트 비트를 전송하지 못한 경우 " 데드 " 라고 선언됩니다. 이 경우 진행중인 모든 트랜잭션이 완료되고 자원이 해제됩니다. 이전 MySQL 인스턴스가 시작 된 모든 활동이 완료 될 때까지 SQL 노드는 다시 연결할 수 없습니다. 이 판정에 사용되는 3 하트 비트의 조건은
HeartbeatIntervalDbDb
에서 설명한 것과 동일합니다.기본 간격은 1500 밀리 초 (1.5 초)입니다. 각 데이터 노드는 다른 모든 데이터 노드와 관계없이 연결중인 MySQL 서버를 모니터링하기 위해이 간격은 각 데이터 노드 다를 수 있습니다.
자세한 내용은 네트워크 통신 대기 시간 을 참조하십시오.
HeartbeatOrder
Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 numeric 0 0 - 65535 S 데이터 노드는 각 데이터 노드가 이전 데이터 노드를 모니터하는 순환적인 방식으로 서로 하트 비트를 전송합니다. 하트 비트가 특정 데이터 노드에서 감지되지 않은 경우,이 노드는 순환 직전의 데이터 노드를 " 죽은 " (즉, 클러스터에서 액세스 할 수 없게되었다) 고 선언합니다. 데이터 노드가 죽은하다는 판정은 세계적으로 이루어집니다. 즉, 데이터 노드 데드가 선언되면 그 노드는 클러스터의 모든 노드에서 그렇게 간주됩니다.
다 른 호스트에 배치 된 데이터 노드 간의 하트 비트 (예를 들어, 매우 긴 하트 비트 간격이나 일시적인 연결 문제로) 다른 노드 쌍 사이의 하트 비트에 비해 너무 늦게 위해 데이터 노드가 아직 클러스터의 일부로 기능하고 있음에도 불구하고, 데드가 선언 될 수 있습니다.
이러한 상황에서는 데이터 노드 간의 하트 비트 전송 순서가 특정 데이터 노드가 죽은 선언 여부에 영향을주고있는 가능성이 있습니다. 이 선언이 불필요하게 발생하면, 그것은 노드 그룹의 손실을 초래하고, 또한 클러스터의 장애로 이어질 수 있습니다.
다음 표와 같이 두 개의 호스트 컴퓨터
host1
및host2
에서 실행되는 4 개의 데이터 노드 A, B, C 및 D가 이러한 데이터 노드가 2 개의 노드 그룹을 구성하고있다 설치 생각합니다.Node Group
Nodes Running on
host1
Nodes Running on host2
Node Group 0:
Node A
Node B Node Group 1:
Node C
Node D 하트 비트가 A-> B-> C-> D-> A 순으로 전송된다고합니다. 이 경우 호스트간에 하트 비트가 손실되면 노드 B가 노드 A 끊어짐 선언 노드 C가 B 끊어짐 선언합니다. 이 결과, 노드 그룹 0이 손실되므로 클러스터가 작동 중지합니다. 한편, 전송 순서가 A-> B-> D-> C-> A이다 (및 다른 모든 조건이 위에 남아있는 경우) 하트 비트가 손실되면 노트북 A와 D가 데드가 선언됩니다. 이 경우 각 노드 그룹에 하나씩 노드가 남아 있기 때문에 클러스터는 유지됩니다.
HeartbeatOrder
구성 매개 변수는 사용자가 하트 비트 전송 순서를 구성 할 수 있도록합니다.HeartbeatOrder
의 기본값은 0입니다. 모든 데이터 노드에서 기본값을 사용할 수 있도록하면 하트 비트 전송 순서는NDB
에 의해 결정됩니다. 이 매개 변수를 사용하는 경우 클러스터의 모든 데이터 노드에 0 이외의 값 (65535)으로 설정해야합니다. 또한이 값은 각 데이터 노드에서 고유해야합니다. 이로 인해 심장 박동이HeartbeatOrder
값이 작은 노드에서 큰 노드에 순서대로 전송된다 (이후HeartbeatOrder
이 가장 큰 노드에서 가장 작은 노드에 전송되어 순환이 완결) 수 있습니다. 예를 들어, 위의 시나리오에서 하트 비트 전송 순서 A-> B-> D-> C-> A를 강제로 값을 연속시킬 필요는 없습니다. 여기에 나타낸 바와 같은HeartbeatOrder
값을 설정할 수 있습니다.Node HeartbeatOrder
A 10 B 20 C 30 D 25 이 매개 변수를 사용하여 실행중인 MySQL Cluster의 하트 비트 전송 순서를 변경하려면 먼저 글로벌 구성 (
config.ini
) 파일에 클러스터의 각 데이터 노드의HeartbeatOrder
을 설정해야합니다. 변경 사항을 적용하려면 다음 중 하나를 수행해야합니다.전체 클러스터의 완전한 종료하고 다시 시작합니다.
2 회 연속 클러스터의 롤링 다시 시작합니다. 두 롤링 재시작에서 모든 노드가 동일한 순서로 다시 시작해야합니다 .
DUMP 908
을 사용하면 데이터 노드 로그에서이 매개 변수의 효과를 관찰 할 수 있습니다.ConnectCheckIntervalDelay
Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 milliseconds 0 0 - 4294967039 (0xFFFFFEFF) N 이 매개 변수는 데이터 노드 간의 연결 검사를 활성화합니다.
ConnectCheckIntervalDelay
초 간격 이내에 응답 할 수없는 데이터 노드 의심치로 간주되며, 이러한 간격이 2 회 계속 된 뒤에서 죽은 것으로 간주됩니다.이 매개 변수의 기본값은 0입니다. 이것은 MySQL Cluster NDB 7.1에서 변경된 사항입니다.
TimeBetweenLocalCheckpoints
Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 number of 4-byte words, as a base-2 logarithm 20 0 - 31 N 이 매개 변수는 새 로컬 포인트를 시작할 때까지의 대기 시간을 지정하지 않는다는 점에서 예외입니다. 어느 쪽인가하면 상대적으로 적은 갱신 될 클러스터에서 로컬 체크 포인트가 실행되지 않도록하는 데 사용됩니다. 업데이트 횟수가 많은 대부분의 클러스터는 직전의 로컬 체크 포인트가 완료 한 직후에 새로운 로컬 체크 포인트가 시작 될 가능성이 있습니다.
이전 로컬 체크 포인트가 시작된 이후에 실행 된 모든 쓰기 작업의 크기가 추가됩니다. 이 매개 변수는 4 바이트 워드의 수의 바닥 2의 대수로 지정되는 점에서도 예외입니다. 따라서 기본값 20은 4M 바이트 (4 * 2 20 )의 쓰기 작업을 의미하고 21은 8M 바이트를 의미하고, 최대 값 31는 8G 바이트의 쓰기 작업과 동일합니다.
클러스터의 모든 쓰기 작업이 함께 추가됩니다.
TimeBetweenLocalCheckpoints
를 6 이하로 설정하면 로컬 체크 포인트는 클러스터의 워크로드와 관계없이 끊김없이 연속적으로 실행됩니다.TimeBetweenGlobalCheckpoints
Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 milliseconds 2000 20 - 32000 N 트랜잭션이 커밋되면 데이터가 미러링 된 노드의 메인 메모리에 커밋됩니다. 그러나 트랜잭션 로그 레코드는 커밋의 일부로 디스크에 플러시되지 않습니다. 트랜잭션을 적어도 2 개의 자립적 인 호스트 시스템에서 안전하게 커밋하여 지속 가능성에 대한 합리적인 기준이 충족 될 것이라는 것이이 동작의 근거입니다.
또한 최악의 경우 (클러스터의 완전한 충돌)도 적절히 처리되도록하는 것이 중요합니다. 이 수행을 보장하기 위해 특정 거리 이내에 이루어지는 모든 거래는 글로벌 체크 포인트에 포함됩니다. 이것은 디스크에 플래시 된 커밋 된 트랜잭션으로 간주 될 수 있습니다. 즉, 트랜잭션은 커밋 프로세스의 일부로서 글로벌 체크 포인트 그룹에 포함됩니다. 그 후,이 그룹의 로그 레코드가 디스크로 플러시되면 트랜잭션 그룹 전체 클러스터의 컴퓨터에서 디스크에 안전하게 커밋됩니다.
이 매개 변수는 글로벌 체크 포인트 사이의 간격을 정의합니다. 기본값은 2000 밀리 초입니다.
TimeBetweenGlobalCheckpointsTimeout
Effective Version Type/Units Default Range/Values Restart Type NDB 7.4.5 milliseconds 120000 10 - 4294967039 (0xFFFFFEFF) N NDB 7.3.9 milliseconds 120000 10 - 4294967039 (0xFFFFFEFF) N 이 매개 변수는 글로벌 체크 포인트 사이의 최소 시간 제한을 정의 합니다. 기본값은 120000밀리 초입니다.
This parameter was added in MySQL Cluster NDB 7.3.9 and MySQL Cluster 7.4.5. (Bug #20069617)
TimeBetweenEpochs
Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 milliseconds 100 0 - 32000 N 이 매개 변수는 MySQL Cluster 복제 동기화 신기원 사이의 간격을 정의합니다. 기본값은 100 밀리 초입니다.
TimeBetweenEpochs
는 MySQL Cluster 복제 성능을 향상시키는 데 사용할 수있는 " micro-GCP " 구현의 일부입니다.TimeBetweenEpochsTimeout
Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 milliseconds 0 0 - 256000 N 이 매개 변수는 MySQL Cluster 복제 동기화 신기원의 시간을 정의합니다. 이 매개 변수 결정된 시간 내에 노드가 글로벌 체크 포인트에 참석하지 못한 경우 노드는 종료됩니다. MySQL Cluster NDB 7.3 이상에서는 기본값은 0입니다 (즉, 시간 제한이 비활성화되어 있습니다).
TimeBetweenEpochsTimeout
는 MySQL Cluster 복제 성능을 향상시키는 데 사용할 수있는 " micro-GCP " 구현의 일부입니다.GCP의 저장에 1 분 이상 소요되거나 GCP의 저장에 10 초 이상의 시간이 걸린 경우에는 항상이 매개 변수의 현재 값과 경고가 클러스터 로그에 기록됩니다.
이 매개 변수를 0으로 설정하면 저장 시간, 위탁의 제한 또는 둘 다에 의해 발생하는 GCP의 정지를 해제합니다. 이 매개 변수의 최대 값은 256,000 밀리 초입니다.
MaxBufferedEpochs
Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 epochs 100 0 - 100000 N 구독 노드가 연기 할 처리되지 않은 신기원 수. 이 수를 초과하면 지연 가입자가 절단됩니다.
대부분의 일반 작업에서는 기본값 100으로 충분합니다. 구독 노드의 지연으로 인해 손실이 발생하는 경우, 그 원인은 일반적으로 프로세스 또는 스레드에 대한 네트워크 또는 스케줄링 문제입니다. (드문 경우이지만,
NDB
클라이언트의 버그로 인해이 문제가 발생할 수 있습니다.) 신기원이 큰 경우에는이 값을 기본값보다 작게 설정하는 것이 바람직 할 수 있습니다.절단하여 클라이언트의 문제로 인해 데이터 노드 서비스가 영향을 받아 데이터를 버퍼링하기위한 메모리가 부족하여 결국 종료 할 수 없습니다. 대신, 절단의 결과로 (예를 들어, 바이너리 로그의 격차 이벤트에 의해) 클라이언트에 영향을 클라이언트가 강제로 프로세스를 다시 연결하거나 다시 시작합니다.
MaxBufferedEpochBytes
Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 bytes 26214400 26214400 (0x01900000) - 4294967039 (0xFFFFFEFF) N 이 노드가 신기원을 버퍼링하는데 할당 바이트의 합계 수.
TimeBetweenInactiveTransactionAbortCheck
Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 milliseconds 1000 1000 - 4294967039 (0xFFFFFEFF) N 타임 아웃 처리는 각 트랜잭션의 타이머를 매개 변수로 지정된 간격마다 한 번씩 체크하고 실행됩니다. 따라서이 파라미터를 1000 밀리 초로 설정하면 모든 트랜잭션 제한 시간이 1 초에 한번씩 체크됩니다.
기본값은 1000 밀리 초 (1 초)입니다.
TransactionInactiveTimeout
Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 milliseconds [see text] 0 - 4294967039 (0xFFFFFEFF) N 이 매개 변수는 트랜잭션이 중지 될 때까지 동일한 트랜잭션에서 작업간에 경과가 허용되는 최대 시간을 지정합니다.
이 매개 변수의 기본값은
4G
(최대도 마찬가지입니다). 트랜잭션이 잠금을 보유하는 기간이 너무 길지 않게 할 필요가있는 실시간 데이터베이스의 경우,이 매개 변수를 비교적 낮은 값으로 설정하도록하십시오. 단위는 밀리 초입니다TransactionDeadlockDetectionTimeout
Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 milliseconds 1200 50 - 4294967039 (0xFFFFFEFF) N 노드는 트랜잭션을 포함한 쿼리를 실행할 때 클러스터의 다른 노드가 응답 할 때까지 기다린 후 작업을 계속합니다. 응답의 실패는 다음 중 하나의 이유로 발생합니다.
노드가 " 죽은 " 입니다
조작이 잠금 큐에 들어갔습니다
액션의 실행을 요구 한 노드에 매우 높은 부하가 걸려있을 수 있습니다.
이 시간 초과 매개 변수는 트랜잭션이 중단 될 때까지 트랜잭션 코디네이터가 다른 노드에 의한 쿼리의 실행을 기다리는 시간을 지정하는 것으로, 노드 장애 처리 및 교착 상태 감지에 중요합니다.
기본 시간 초과 값은 1200 밀리 초 (1.2 초)입니다.
이 매개 변수의 최소 50 밀리 초입니다.
DiskSyncSize
Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 bytes 4M 32K - 4294967039 (0xFFFFFEFF) N 이것은 로컬 체크 포인트 파일에 데이터를 플래시까지 저장되는 최대 바이트 수입니다. 이것은 성능을 크게 저하시킬 수있는 쓰기 버퍼링을 금지하기 위해 이루어집니다. 이 매개 변수는
TimeBetweenLocalCheckpoints
대신 사용하기위한 것이 아닙니다 .참고ODirect
이 활성화되어있는 경우DiskSyncSize
를 설정할 필요가 없습니다. 실제로 그런 경우는 그 값이 무시됩니다.기본값은 4M (4 메가 바이트)입니다.
DiskCheckpointSpeed
Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 bytes 10M 1M - 4294967039 (0xFFFFFEFF) N 로컬 체크 포인트 동안 디스크에 전송되는 데이터의 양 (바이트 / 초). 이 할당은 DML 작업과 백업 (백업 기록은 제외)에서 공유됩니다. 이것은 집약적 인 DML 실행 중에 시작된 백업이 Redo 로그 버퍼의 대량 발생에 의해 저지되어 충돌이 심각한 경우 완전히 실패 할 가능성이 있다는 것을 의미합니다.
기본값은 10M (10 메가 바이트 / 초)입니다.
MySQL Cluster 7.4.1 이후 버전에서는이 매개 변수는 사용되지 않으며 대신 구성 매개 변수
MinDiskWriteSpeed
,MaxDiskWriteSpeed
,MaxDiskWriteSpeedOtherNodeRestart
및MaxDiskWriteSpeedOwnRestart
을 사용하여 LCP 및 백업의 쓰기 속도를 제어 할 수 있습니다.DiskCheckpointSpeedInRestart
Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 bytes 100M 1M - 4294967039 (0xFFFFFEFF) N 다시 시작 작업의 일부인 로컬 체크 포인트 동안 디스크에 전송되는 데이터의 양 (바이트 / 초).
기본값은 100M (100 메가 바이트 / 초)입니다.
MySQL Cluster 7.4.1 이후 버전에서는이 매개 변수는 사용되지 않으며 대신 구성 매개 변수
MinDiskWriteSpeed
,MaxDiskWriteSpeed
,MaxDiskWriteSpeedOtherNodeRestart
및MaxDiskWriteSpeedOwnRestart
을 사용하여 LCP 및 백업의 쓰기 속도를 제어 할 수 있습니다.NoOfDiskPagesToDiskAfterRestartTUP
이 매개 변수는 사용되지 않으며, MySQL Cluster의 향후 버전에서 제거 될 예정입니다. 대신
DiskCheckpointSpeedInRestart
및DiskSyncSize
를 사용하십시오. MySQL Cluster 7.4.1 이후에서는, 대신에 그 릴리스에서 도입 된 구성 매개 변수MinDiskWriteSpeed
,MaxDiskWriteSpeed
,MaxDiskWriteSpeedOtherNodeRestart
및MaxDiskWriteSpeedOwnRestart
을 사용하도록하십시오.MaxDiskWriteSpeed
Effective Version Type/Units Default Range/Values Restart Type NDB 7.4.1 numeric 20M 1M - 1024G S Set the maximum rate for writing to disk, in bytes per second, by local checkpoints and backup operations when no restarts (by this data node or any other data node) are taking place in this MySQL Cluster.
For setting the maximum rate of disk writes allowed while this data node is restarting, use
MaxDiskWriteSpeedOwnRestart
. For setting the maximum rate of disk writes allowed while other data nodes are restarting, useMaxDiskWriteSpeedOtherNodeRestart
. The minimum speed for disk writes by all LCPs and backup operations can be adjusted by settingMinDiskWriteSpeed
.MaxDiskWriteSpeed
was added in MySQL Cluster NDB 7.4.1.MaxDiskWriteSpeedOtherNodeRestart
Effective Version Type/Units Default Range/Values Restart Type NDB 7.4.1 numeric 50M 1M - 1024G S 이 MySQL Cluster에 포함 된 노드 이외의 1 개 이상의 데이터 노드가 다시 시작하는 경우 로컬 체크 포인트 및 백업 작업에 의한 디스크 쓰기 최대 속도 (바이트 / 초)을 설정합니다.
이 데이터 노드를 다시 시작하는 동안 허용되는 디스크 쓰기 최대 속도를 설정하려면
MaxDiskWriteSpeedOwnRestart
을 사용합니다. 클러스터에서 데이터 노드가 다시 시작되지 않은 경우에 허용되는 디스크 쓰기 최대 속도를 설정하려면MaxDiskWriteSpeed
을 사용합니다. 모든 LCP 및 백업 작업에 의한 디스크 쓰기의 최소 속도를 조정하려면MinDiskWriteSpeed
을 설정합니다.MaxDiskWriteSpeedOtherNodeRestart
은 MySQL Cluster NDB 7.4.1에서 추가되었습니다.MaxDiskWriteSpeedOwnRestart
Effective Version Type/Units Default Range/Values Restart Type NDB 7.4.1 numeric 200M 1M - 1024G S 이 데이터 노드를 다시 시작 로컬 체크 포인트 및 백업 작업에 의한 디스크 쓰기 최대 속도 (바이트 / 초)을 설정합니다.
다른 데이터 노드를 다시 시작하는 동안 허용되는 디스크 쓰기 최대 속도를 설정하려면
MaxDiskWriteSpeedOtherNodeRestart
을 사용합니다. 클러스터에서 데이터 노드가 다시 시작되지 않은 경우에 허용되는 디스크 쓰기 최대 속도를 설정하려면MaxDiskWriteSpeed
을 사용합니다. 모든 LCP 및 백업 작업에 의한 디스크 쓰기의 최소 속도를 조정하려면MinDiskWriteSpeed
을 설정합니다.MaxDiskWriteSpeedOwnRestart
은 MySQL Cluster NDB 7.4.1에서 추가되었습니다.MinDiskWriteSpeed
Effective Version Type/Units Default Range/Values Restart Type NDB 7.4.1 numeric 10M 1M - 1024G S 로컬 체크 포인트 및 백업 작업에 의한 디스크 쓰기의 최소 속도 (바이트 / 초)을 설정합니다.
다양한 조건에서 LCP 및 백업에 허용되는 디스크 쓰기 최대 속도는 파라미터
MaxDiskWriteSpeed
,MaxDiskWriteSpeedOwnRestart
및MaxDiskWriteSpeedOtherNodeRestart
를 사용하여 조정할 수 있습니다. 자세한 내용은 이러한 매개 변수의 설명을 참조하십시오.MinDiskWriteSpeed
은 MySQL Cluster NDB 7.4.1에서 추가되었습니다.NoOfDiskPagesToDiskAfterRestartACC
이 매개 변수는 사용되지 않으며, MySQL Cluster의 향후 버전에서 제거 될 예정입니다. MySQL Cluster NDB 7.3에서는 대신
DiskCheckpointSpeedInRestart
및DiskSyncSize
를 사용하십시오. MySQL Cluster NDB 7.4.1 이상에서는 매개 변수MinDiskWriteSpeed
,MaxDiskWriteSpeed
,MaxDiskWriteSpeedOtherNodeRestart
및MaxDiskWriteSpeedOwnRestart
을 사용하도록하십시오.NoOfDiskPagesToDiskDuringRestartTUP
(DEPRECATED)이 매개 변수는 사용되지 않으며, MySQL Cluster의 향후 버전에서 제거 될 예정입니다. MySQL Cluster NDB 7.3에서는 대신
DiskCheckpointSpeedInRestart
및DiskSyncSize
를 사용하십시오. MySQL Cluster NDB 7.4.1 이상에서는 매개 변수MinDiskWriteSpeed
,MaxDiskWriteSpeed
,MaxDiskWriteSpeedOtherNodeRestart
및MaxDiskWriteSpeedOwnRestart
을 사용하도록하십시오.NoOfDiskPagesToDiskDuringRestartACC
(DEPRECATED)이 매개 변수는 사용되지 않으며, MySQL Cluster의 향후 버전에서 제거 될 예정입니다. MySQL Cluster NDB 7.3에서는 대신
DiskCheckpointSpeedInRestart
및DiskSyncSize
를 사용하십시오. MySQL Cluster NDB 7.4.1 이상에서는 매개 변수MinDiskWriteSpeed
,MaxDiskWriteSpeed
,MaxDiskWriteSpeedOtherNodeRestart
및MaxDiskWriteSpeedOwnRestart
을 사용하도록하십시오.ArbitrationTimeout
Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 milliseconds 7500 10 - 4294967039 (0xFFFFFEFF) N 이 매개 변수는 데이터 노드가 중재 메시지에 대한 중재자의 응답을 기다리는 시간을 설정합니다. 이를 초과하는 경우는 네트워크가 끊어진 것으로 간주됩니다.
MySQL Cluster NDB 7.3 이상에서는 기본값은 7500 밀리 초 (7.5 초)입니다.
Arbitration
Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 enumeration Default Default, Disabled, WaitExternal N Arbitration
매개 변수를 사용하여이 매개 변수에 사용할 수있는 세 가지 값 중 하나에 해당하는 중재 제도를 선택할 수 있습니다.기본 이 경우 관리 및 API 노드의
ArbitrationRank
설정에 지정된대로 중재가 정상적으로 진행합니다. 이것은 기본값입니다.disabled
config.ini
파일의[ndbd default]
섹션에Arbitration = Disabled
를 설정하면 모든 관리 및 API 노드에서ArbitrationRank
의 0을 설정 한 경우와 동일한 결과를 얻을 수 있습니다.Arbitration
를 이렇게 설정하면ArbitrationRank
설정은 무시됩니다.WaitExternal
Arbitration
매개 변수를 사용하여 클러스터가 내부에서 중재를 처리하는 대신ArbitrationTimeout
에서 지정된 시간이 경과 할 때까지 외부 클러스터 관리자 응용 프로그램에 의한 중재의 실행을 대기하는 방법으로 중재를 구성 할 수 합니다. 이렇게는config.ini
파일의[ndbd default]
섹션에Arbitration = WaitExternal
을 설정합니다.WaitExternal
설정에서 최상의 결과를 얻기 위해서는ArbitrationTimeout
을 외부 클러스터 관리자가 중재를 수행하는 데 필요한 간격의 2 배로 설정하는 것이 좋습니다.
중요이 매개 변수는 클러스터 구성 파일의
[ndbd default]
섹션에서만 사용하도록하십시오.Arbitration
개별 데이터 노드에서 다른 값으로 설정하면 클러스터의 동작은 불특정됩니다.버퍼링 및 로깅 고급 사용자는 몇 가지
[ndbd]
구성 매개 변수를 사용하면함으로써 노드 프로세스가 사용하는 자원을보다 효율적으로 관리하고 필요에 따라 다양한 버퍼 크기를 조정할 수 있습니다.이러한 버퍼는 로그 레코드를 디스크에 기록 할 때 파일 시스템에 대한 프론트 엔드로 사용됩니다. 노드가 디스크없는 모드에서 실행되는 경우는
NDB
스토리지 엔진의 파일 시스템 추상화 계층에서 디스크 쓰기 " 위장 " 되기 때문에 페널티없이이 매개 변수를 최소로 설정할 수 있습니다.
UndoIndexBuffer
Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 unsigned 2M 1M - 4294967039 (0xFFFFFEFF) N 이 매개 변수 크기가 설정되는 Undo 인덱스 버퍼는 로컬 체크 포인트 중에 사용됩니다.
NDB
스토리지 엔진은 사용 가능한 Redo 로그와 체크 포인트의 일관성에 기반 복구 체계를 사용합니다. 시스템 전체의 쓰기를 차단하지 않고 일관성있는 체크 포인트를 만들기 위해 로컬 체크 포인트를 실행하는 동안 Undo 로깅이 이루어집니다. Undo 기록은 한 번에 하나의 테이블 조각에 대해 활성화됩니다. 이 최적화가 가능한 것은 테이블이 모두 메인 메모리에 저장되어 있기 때문입니다.Undo 인덱스 버퍼는 기본 키의 해시 인덱스 업데이트 사용됩니다. 삽입과 삭제는 해시 인덱스가 재구성됩니다. NDB 스토리지 엔진은 모든 육체적 인 변화를 시스템 재부팅시에 취소 할 수 있도록 변경 사항을 하나의 인덱스 페이지에 매핑 Undo 로그 레코드를 기록합니다. 또한 로컬 체크 포인트를 시작할 때 각 조각의 활성 삽입 작업을 기록합니다.
읽기 및 업데이트에서는 록 비트가 설정되어 해시 인덱스 항목의 헤더가 업데이트됩니다. 이러한 변경은 페이지 쓰기 알고리즘에 의해 처리되기 때문에 이러한 작업 Undo 로깅이 필요하지 않습니다.
이 버퍼는 기본적으로 2M 바이트입니다. 최소 1M 바이트입니다. 대부분의 어플리케이션에서는 이것으로 충분합니다. 대규모 트랜잭션이나 대규모 기본 키와 함께 매우 크거나 다수의 삽입 및 삭제를 수행하는 응용 프로그램이 버퍼의 크기를 늘릴 필요가있을 수 있습니다. 이 버퍼가 너무 작 으면 NDB 스토리지 엔진은 내부 오류 코드 677
"Index UNDO buffers overloaded"
를 발행합니다.중요롤링 다시 시작하는 동안이 매개 변수의 값을 줄이는 것은 안전하지 않습니다.
UndoDataBuffer
Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 unsigned 16M 1M - 4294967039 (0xFFFFFEFF) N 이 매개 변수는 Undo 데이터 버퍼의 크기를 설정합니다. Undo 데이터 버퍼는 Undo 인덱스 버퍼와 거의 동일한 기능을 수행하지만, 인덱스 메모리가 아닌 데이터 메모리에 대해 사용됩니다. 이 버퍼는 조각의 로컬 체크 포인트 단계에서 삽입, 삭제 및 업데이트를 위해 사용됩니다.
Undo 로그 항목을 기록하는 작업이 증가함에 따라 커지는 경향이 있으므로이 버퍼에도 대응하는 인덱스 메모리보다 큽니다 (기본값은 16M 바이트입니다).
일부 응용 프로그램이 메모리 양이 불필요하게 큰 경우가 있습니다. 그런 경우이 크기를 최소 1M 바이트로 줄일 수 있습니다.
대부분의 경우이 버퍼의 크기를 늘릴 필요가 없습니다. 그런 필요가있는 경우 데이터베이스의 갱신 활동에 의해 발생하는 부하를 디스크가 실제로 처리 할 수 있는지 여부를 확인하는 것이 좋습니다. 이 버퍼 크기를 늘려도 디스크 공간 부족을 해소 할 수 없습니다.
이 버퍼가 너무 작아 과밀 상태가 된 경우, NDB 스토리지 엔진은 다음 내부 오류 코드를 발행합니다 : 891 ( Data UNDO buffers overloaded ).
중요롤링 다시 시작하는 동안이 매개 변수의 값을 줄이는 것은 안전하지 않습니다.
RedoBuffer
Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 bytes 32M 1M - 4294967039 (0xFFFFFEFF) N 갱신 활동도 모두 기록해야합니다. Redo 로그는 시스템이 재부팅 될 때마다 이러한 업데이트를 재현 할 수 있습니다. NDB 복구 알고리즘은 Undo 로그와 데이터의 " 퍼지 " 체크 포인트를 사용하여 Redo 로그를 적용하여 복원 시점까지의 모든 변경을 재현합니다.
RedoBuffer
은 Redo 로그가 기록되는 버퍼의 크기를 설정합니다. 기본값은 32M 바이트입니다. 최소 1M 바이트입니다.이 버퍼가 너무 작 으면
NDB
스토리지 엔진은 내부 오류 코드 1221 ( REDO log buffers overloaded )를 발행합니다. 따라서 클러스터 구성의 온라인 변경의 일부로RedoBuffer
값을 줄이려고하는 경우주의하십시오.ndbmtd 는 LDM 스레드마다 별도의 버퍼를 할당합니다 (
ThreadConfig
를 참조하십시오). 예를 들어, 4 개의 LDM 스레드가있는 경우 ndbmtd 데이터 노드는 실제로는 4 개의 버퍼가 있으며 각각RedoBuffer
바이트 (총4 * RedoBuffer
바이트)가 할당됩니다.EventLogBufferSize
Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 bytes 8192 0 - 64K S 데이터 노드 내부의 NDB 로그 이벤트에 사용되는 순환 버퍼 크기를 제어합니다.
로그 메시지의 제어 클러스터 관리는
stdout
로 전송되는 다양한 이벤트 유형의 로그 메시지 수를 제어 할 수있는 것이 매우 중요합니다. 이벤트 범주마다 16 개의 설정 가능한 이벤트 레벨 (번호 0-15)이 있습니다. 특정 이벤트 범주의 이벤트 보고서를 레벨 15로 설정하면 해당 범주의 모든 이벤트 보고서가stdout
로 전송됩니다. 0으로 설정하면 해당 카테고리의 이벤트 보고서를 전혀하지 않게됩니다.기본적으로 부팅 메시지 만
stdout
에 전송되고 나머지 이벤트 보고서의 수준은 기본 0으로 설정됩니다. 이것은 이러한 메시지가 관리 서버의 클러스터 로그에 전송되기 때문입니다.관리 클라이언트에서 유사한 수준의 세트를 설정하면 클러스터 로그에 기록 할 이벤트 수준을 지정할 수 있습니다.
LogLevelStartup
Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 integer 1 0 - 15 N 프로세스를 시작하는 동안 생성되는 이벤트의보고 수준.
기본 레벨은 1입니다.
LogLevelShutdown
Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 integer 0 0 - 15 N 노드의 정상적인 종료의 일부로 생성되는 이벤트의보고 수준.
기본 레벨은 0입니다
LogLevelStatistic
Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 integer 0 0 - 15 N 기본 키 읽기의 수, 업데이트 수, 삽입 수, 버퍼 사용량에 대한 정보 등의 통계 이벤트의보고 수준.
기본 레벨은 0입니다.
LogLevelCheckpoint
Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 log level 0 0 - 15 N 로컬 및 글로벌 체크 포인트에 의해 생성되는 이벤트의보고 수준.
기본 레벨은 0입니다.
LogLevelNodeRestart
Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 integer 0 0 - 15 N 노드를 다시 시작할 때 생성되는 이벤트의보고 수준.
기본 레벨은 0입니다.
LogLevelConnection
Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 integer 0 0 - 15 N 클러스터 노드 사이의 연결에 의해 생성되는 이벤트의보고 수준.
기본 레벨은 0입니다.
LogLevelError
Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 integer 0 0 - 15 N 전체 클러스터의 오류 및 경고에 의해 생성되는 이벤트의보고 수준. 이러한 오류는 노드 장애의 원인이되지는 않지만보고 할 가치는 있다고 생각됩니다.
기본 레벨은 0입니다.
LogLevelCongestion
Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 levelr 0 0 - 15 N 혼잡에 의해 생성되는 이벤트의보고 수준. 이러한 오류는 노드 장애의 원인이되지는 않지만보고 할 가치는 있다고 생각됩니다.
기본 레벨은 0입니다.
LogLevelInfo
Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 integer 0 0 - 15 N 클러스터의 일반적인 상태 정보로 생성되는 이벤트의보고 수준.
기본 레벨은 0입니다.
MemReportFrequency
Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 unsigned 0 0 - 4294967039 (0xFFFFFEFF) N 이 매개 변수는 데이터 노드의 메모리 사용 상황 보고서를 클러스터 로그에 기록하는 빈도를 제어합니다. 이 보고서 사이의 초 수를 나타내는 정수 값입니다.
각 데이터 노드의 데이터 메모리와 인덱스 메모리 사용량은
config.ini
파일에 설정된DataMemory
및IndexMemory
의 비율과 32K 바이트의 페이지 모두에서 각각 기록됩니다. 예를 들어,DataMemory
가 100M 바이트이며 특정 데이터 노드가 데이터 메모리 스토리지로 50M 바이트를 사용하는 경우 클러스터 로그의 해당 행이있게됩니다.2006-12-24 01:18:16 [MgmSrvr] INFO -- Node 2: Data usage is 50%(1280 32K pages of total 2560)
MemReportFrequency
는 필수 매개 변수가 없습니다. 사용하는 경우,config.ini
의[ndbd default]
섹션에서 모든 클러스터 데이터 노드에 설정하거나 구성 파일의 해당[ndbd]
섹션에서 각 데이터 노드에 설정하거나 재정의 할 수 합니다. 최소 (기본 값도 동일)은 0입니다. 이 경우 섹션 18.5.6.2 "MySQL Cluster 로그 이벤트 ' 통계 이벤트 설명에서 지적했듯이, 메모리 사용량이 특정 비율 (80 %, 90 % 및 100 %)에 달했다 때만 메모리의 보고서가 기록됩니다.StartupStatusReportFrequency
Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 seconds 0 0 - 4294967039 (0xFFFFFEFF) N --initial
을 지정하고 데이터 노드를 시작하면 시작 단계 4 ( 섹션 18.5.1 "MySQL Cluster의 시작 단계 요약" 을 참조하십시오)에서 Redo 로그 파일이 초기화됩니다.NoOfFragmentLogFiles
,FragmentLogFileSize
또는 둘 모두에 매우 큰 값을 설정하면이 초기화 시간이 오래 걸릴 수 있습니다.StartupStatusReportFrequency
구성 매개 변수를 사용하여이 프로세스의 진행에 관한 보고서를 정기적으로 기록하도록 강제 할 수 있습니다. 이 경우에는 여기에 같이 초기화 된 파일의 수와 공간의 양에 대한 진행 상황을 클러스터 로그에보고됩니다.2009-06-20 16:39:23 [MgmSrvr] INFO -- Node 1: Local redo log file initialization status: #Total files: 80, Completed: 60 #Total MBytes: 20480, Completed: 15557 2009-06-20 16:39:23 [MgmSrvr] INFO -- Node 2: Local redo log file initialization status: #Total files: 80, Completed: 60 #Total MBytes: 20480, Completed: 15570
이 보고서는 시작 단계 4에서
StartupStatusReportFrequency
초마다 기록됩니다.StartupStatusReportFrequency
이 0 (디폴트)의 경우, Redo 로그 파일의 초기화 프로세스의 시작과 완료시에만 보고서가 클러스터 로그에 기록됩니다.디버그 매개 변수 MySQL Cluster NDB 7.3 이상에서는
DictTrace
을 사용하여 테이블 만들기 및 삭제에 의해 생성 된 이벤트의 추적을 기록 할 수 있습니다. 이 매개 변수는 NDB 커널 코드를 디버깅하는 경우에만 유용합니다.DictTrace
는 정수 값을 취합니다. 현재 지원되는 유일한 값은 0 (기본. 로깅 없음) 1 (로깅 사용)입니다.백업 매개 변수 이 절에서 설명하는
[ndbd]
파라미터는 온라인 백업 수행을 위해 확보 된 메모리 버퍼를 정의합니다.
BackupDataBufferSize
Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 bytes 16M 0 - 4294967039 (0xFFFFFEFF) N 백업 생성은 데이터를 디스크에 전송하는 데 사용되는 2 개의 버퍼가 있습니다. 백업 데이터 버퍼는 노드의 테이블을 스캔하여 기록 된 데이터를 작성하는 데 사용됩니다. 이 버퍼에 쓸
BackupWriteSize
에서 지정된 레벨에 도달하면 페이지가 디스크로 전송됩니다. 백업 프로세스는 데이터를 디스크로 플러시하면서 공간이 없어 질 때까지이 버퍼에 쓰기 계속할 수 있습니다. 이것이 발생하면 백업 프로세스에서 검색을 일시 중지하고 디스크 쓰기가 어느 정도 완료 메모리가 해제되지 스캔을 계속할 수있을 때까지 기다립니다.이 매개 변수의 기본값은 16M 바이트입니다.
BackupLogBufferSize
Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 bytes 16M 0 - 4294967039 (0xFFFFFEFF) N 백업 로그 버퍼는 백업 데이터 버퍼와 같은 역할을하지만 백업이 실행되는 동안 열린 테이블 쓰기 로그를 생성하는 데 사용됩니다. 이 페이지의 쓰기는 백업 데이터 버퍼와 같은 원칙이 적용되지만 백업 로그 버퍼 공간이 부족하면 백업이 실패합니다. 따라서 백업 로그 버퍼의 크기는 백업 실행중인 쓰기 활동에 의해 발생하는 부하를 처리하기에 충분한 크기 일 필요가 있습니다. 섹션 18.5.3.3 "MySQL Cluster 백업 구성" 을 참조하십시오.
대부분의 응용 프로그램에서는이 매개 변수의 기본값으로 충분합니다. 실제 백업 로그 버퍼가 가득 찼을 경우보다 디스크 쓰기 속도가 불충분 한 경우가 더 백업이 실패 할 가능성이 높습니다. 디스크 서브 시스템이 응용 프로그램에서 발생하는 쓰기 부하에 맞게 구성되어 있지 않으면 클러스터가 필요한 작업을 수행 할 수 없을 가능성이 높아집니다.
디스크 나 네트워크 연결보다 프로세서가 병목 같은 방법으로 클러스터 노드를 구성하는 것이 좋습니다.
이 매개 변수의 기본값은 16M 바이트입니다.
BackupMemory
Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 bytes 32M 0 - 4294967039 (0xFFFFFEFF) N 이 매개 변수는 단순히
BackupDataBufferSize
과BackupLogBufferSize
의 합계입니다.MySQL Cluster NDB 7.3 이상에서는이 매개 변수의 기본값은 16M 바이트 + 16M 바이트 = 32M 바이트입니다.
중요BackupDataBufferSize
과BackupLogBufferSize
총BackupMemory
의 기본값을 초과하는 경우에는config.ini
파일에서이 매개 변수를이 총에 명시 적으로 설정해야합니다.BackupReportFrequency
Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 seconds 0 0 - 4294967039 (0xFFFFFEFF) N 이 매개 변수는 백업하는 동안 관리 클라이언트에서 백업 상태 보고서를 발행하는 빈도와 같은 보고서를 클러스터 로그에 기록 빈도를 제어합니다 (클러스터 이벤트 로깅 허용하도록 구성되어있는 경우 로깅과 체크 포인트 를 참조하십시오).
기본값은 0입니다.BackupReportFrequency
백업 상태 보고서 사이의 시간 (초)을 나타냅니다.BackupWriteSize
Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 bytes 256K 2K - 4294967039 (0xFFFFFEFF) N 이 매개 변수는 백업 로그와 백업 데이터 버퍼에 의해 디스크에 기록 된 메시지의 디폴트 크기를 지정합니다.
이 매개 변수의 기본값은 256K 바이트입니다.
BackupMaxWriteSize
Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 bytes 1M 2K - 4294967039 (0xFFFFFEFF) N 이 매개 변수는 백업 로그와 백업 데이터 버퍼가 디스크에 기록되는 메시지의 최대 크기를 지정합니다.
이 매개 변수의 기본값은 1M 바이트입니다.
중요이러한 매개 변수를 지정할 때는 다음의 관계가 유효해야합니다. 그렇지 않은 경우는 데이터 노드를 시작할 수 없습니다.
BackupDataBufferSize >= BackupWriteSize + 188KB
BackupLogBufferSize >= BackupWriteSize + 16KB
BackupMaxWriteSize >= BackupWriteSize
MySQL Cluster의 실시간 성능 매개 변수
이 섹션에서 설명하는 [ndbd]
매개 변수는 다중 프로세서의 데이터 노드 호스트의 특정 CPU에 대한 스레드 스케줄링 및 잠금에 사용됩니다.
이러한 매개 변수를 사용하려면 시스템의 root로 데이터 노드 프로세스를 실행해야합니다.
LockExecuteThreadToCPU
Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 CPU ID 64K 0 - 64K N ndbd 에서 사용하는 경우이 매개 변수 (현재는 문자열)은
NDBCLUSTER
의 실행 스레드를 처리하기 위해 할당 된 CPU의 ID를 지정합니다. ndbmtd 에서 사용하는 경우이 매개 변수의 값은 실행 스레드를 처리하기 위해 할당 된 CPU ID의 쉼표로 구분 된 목록입니다. 목록의 각 CPU ID는 0-65535의 (이들을 포함) 범위의 정수로합니다.지정하는 ID의 수는
MaxNoOfExecutionThreads
에 의해 지정되는 실행 스레드 수와 일치하도록하십시오. 그러나이 매개 변수를 사용하면 특정 순서로 스레드가 CPU에 할당되는 보증은 없습니다.ThreadConfig
를 사용하면 이러한보다 세부적으로 제어 할 수 있습니다.LockExecuteThreadToCPU
기본값은 없습니다.LockMaintThreadsToCPU
Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 CPU ID [none] 0 - 64K N 이 매개 변수는
NDBCLUSTER
관리 스레드를 처리하기 위해 할당 된 CPU의 ID를 지정합니다.이 매개 변수의 값은 0-65535의 (이들을 포함) 사이의 정수입니다. MySQL Cluster NDB 7.3 이상에서는 기본값은 없습니다.
RealtimeScheduler
Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 boolean false true, false N 이 매개 변수를 1로 설정하면 데이터 노드 스레드의 실시간 스케줄링이 활성화됩니다.
MySQL Cluster NDB 7.3.3 이전 버전에서는이 매개 변수는 ndbmtd 을 실행하는 노드에서 제대로 작동하지 않았습니다. (Bug # 16961971)
기본값은 0 (예약이 비활성화)입니다SchedulerExecutionTimer
Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 µsec 50 0 - 11000 N 이 매개 변수는 스레드 스케줄러 실행에서 보낸 시간 (밀리 초)을 지정합니다. 이것을 0으로 설정하면 응답 시간이 최소화됩니다. 처리량을 향상시키기 위해이 값을 늘릴 수 있지만, 그 대가로 응답 시간은 길어집니다.
기본값은 50 마이크로 초입니다. 당사의 테스트에서는 이로 인해 고부하의 경우 실질적으로 요구를 지연시키지 않고 처리량이 약간 향상하는 것을 알 수 있습니다.
SchedulerSpinTimer
Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 µsec 0 0 - 500 N 이 매개 변수는 스레드 스케줄러 실행에서 잠들기까지의 시간 (밀리 초)을 지정합니다.
기본값은 0입니다.
BuildIndexThreads
Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 numeric 0 0 - 128 S 이 매개 변수는 시스템 또는 노드를 시작하는 동안 정렬 된 인덱스 재 구축시 및 ndb_restore
--rebuild-indexes
를 실행할 때 작성하는 스레드 수를 지정합니다. 이것은 데이터 노드 당 여러 조각이 테이블에 존재하는 경우 (예를 들어,CREATE TABLE
에서MAX_ROWS
옵션이 사용 된 경우)에만 지원됩니다.이 매개 변수를 0 (기본값)로 설정하면 멀티 스레드에 의한 정렬 된 인덱스의 구축이 해제됩니다.
이 매개 변수는 ndbd 또는 ndbmtd 를 사용할 때 지원됩니다.
데이터 노드의 초기 재부팅 중에 멀티 스레드에 의한 구축을 활성화하려면
TwoPassInitialNodeRestartCopy
데이터 노드 구성 매개 변수를TRUE
로 설정합니다.TwoPassInitialNodeRestartCopy
Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 boolean false true, false N 데이터 노드의 초기 재부팅 멀티 스레드에 의한 정렬 된 인덱스의 구축을 활성화하려면이 구성 매개 변수를
TRUE
로 설정합니다. 이렇게하면 노드의 초기 다시 시작하는 동안 데이터의 2 경로 복사가 활성화됩니다.동시에
BuildIndexThreads
를 0 이외의 값으로 설정해야합니다.Numa
Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 boolean 1 ... N NDB
는 Non-Uniform Memory Access 설정과 (발생 시간 초과) 멀티 CPU 시스템의 영향을 상당히 민감합니다. 이 사실과 대부분의 MySQL Cluster 사용자가 numactl 을 채용하지 않기 때문에, Linux 시스템에서 ndbd 를 실행하는 경우, NUMA 지원은 기본적으로 무시됩니다. Linux 시스템이 NUMA를 지원하여 데이터 노드의 메모리를 NUMA으로 제어 할 필요가있는 경우에는이 매개 변수를 0으로 설정할 수 있습니다.Numa
구성 매개 변수는libnuma.so
가 설치되어있는 Linux 시스템에서만 지원됩니다.멀티 스레드 구성 매개 변수 (ndbmtd) ndbmtd 는 기본적으로 단일 스레드 프로세스로 실행하기 위해 두 가지 방법 중 하나를 사용하여 다중 스레드를 사용하도록 구성해야합니다. 두 경우 모두,
config.ini
파일에 구성 매개 변수를 설정해야합니다. 첫 번째 방법은MaxNoOfExecutionThreads
구성 매개 변수에 적절한 값을 설정합니다. MySQL Cluster NDB 7.3 이상에서는ThreadConfig
를 사용하여 ndbmtd 멀티 스레드에 대한 더 복잡한 규칙을 설정할 수있는 두 번째 방법도 지원됩니다. 이 매개 변수와 멀티 스레드 데이터 노드에서의 사용에 대해 다음 몇 단락에서 설명합니다.
MaxNoOfExecutionThreads
Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 integer 2 2 - 36 IS NDB 7.3.3 integer 2 2 - 72 IS 이 매개 변수는 ndbmtd 의해 사용되는 실행 스레드의 수를 제어합니다. 최대 72입니다 (MySQL Cluster NDB 7.3.3 이전에는, 이것은 36이었습니다). 이 매개 변수는
config.ini
파일의[ndbd]
또는[ndbd default]
섹션에 설정되지만 ndbmtd 전용이며 ndbd 에는 적용되지 않습니다.MaxNoOfExecutionThreads
을 설정하면storage / ndb / kernel / src / vm / mt_thr_config.cpp
파일의 매트릭스에서 결정되는 각 유형의 스레드 수가 설정됩니다. 이 테이블은 MySQL Cluster NDB 7.4.3 이상에서MaxNoOfExecutionThreads
에 사용할 수있는 값에 대응하는 이러한 스레드 수를 보여줍니다 (Bug # 75220, Bug # 20215689). (이전 버전의 MySQL Cluster에 적용되는 매트릭스에 대한 정보를 나타내는 표는이 뒤에 있습니다.) MySQL Cluster NDB 7.4.3에서 변경된 값을 포함하는 행은 강조 표시 텍스트로 보여줍니다.MaxNoOfExecutionThreads
ValueLDM Threads TC Threads Send Threads Receive Threads 0 .. 3 1 1 0 1 4 .. 6 2 1 0 1 7 .. 8 4 1 0 1 9 4 2 0 1 10 4 2 1 1 11 4 3 1 1 12 6 3 1 2 13 6 2 1 2 14 6 3 1 2 15 6 3 2 2 16 8 3 1 2 17 8 4 1 2 18 8 4 2 2 19 8 5 2 2 20 10 4 2 2 21 10 5 2 2 22 10 5 2 3 23 10 6 2 3 24 12 5 2 3 25 12 6 2 3 26 12 6 3 3 27 12 7 3 3 28 12 7 3 4 29 12 8 3 4 30 12 8 4 4 31 12 9 4 4 32 16 8 3 3 33 16 8 3 4 34 16 8 4 4 35 16 9 4 4 36 16 10 4 4 37 16 10 4 5 38 16 11 4 5 39 16 11 5 5 40 20 10 4 4 41 20 10 4 5 42 20 11 4 5 43 20 11 5 5 44 20 12 5 5 45 20 12 5 6 46 20 13 5 6 47 20 13 6 6 48 24 12 5 5 49 24 12 5 6 50 24 13 5 6 51 24 13 6 6 52 24 14 6 6 53 24 14 6 7 54 24 15 6 7 55 24 15 7 7 56 24 16 7 7 57 24 16 7 8 58 24 17 7 8 59 24 17 8 8 60 24 18 8 8 61 24 18 8 9 62 24 19 8 9 63 24 19 9 9 64 32 16 7 7 65 32 16 7 8 66 32 17 7 8 67 32 17 8 8 68 32 18 8 8 69 32 18 8 9 70 32 19 8 9 71 32 20 8 9 72 32 20 8 10 다음 표는 MySQL CLuster NDB 7.4.2 이전
MaxNoOfExecutionThreads
의 값에 대응하는 각 유형의 스레드 수를 취득하는 방법을 보여줍니다. 이 표는 MySQL Cluster NDB 7.3.2 이전에도 사용할 수 있지만,이 버전에서는MaxNoOfExecutionThreads
의 최대치가 36이기 때문에이 표 36보다 큰 값에 해당하는 행은 MySQL Cluster NDB 7.3.3보다 이전에는 적용되지 않습니다MaxNoOfExecutionThreads
ValueLDM Threads TC Threads Send Threads Receive Threads 0 .. 3 1 1 0 1 4 .. 6 2 1 0 1 7 .. 8 4 1 0 1 9 4 2 0 1 10 4 2 1 1 11 4 3 1 1 12 4 3 1 2 13 4 3 2 2 14 4 4 2 2 15 4 5 2 2 16 8 3 1 2 17 8 4 1 2 18 8 4 2 2 19 8 5 2 2 20 8 5 2 3 21 8 5 3 3 22 8 6 3 3 23 8 7 3 3 24 12 5 2 3 25 12 6 2 3 26 12 6 3 3 27 12 7 3 3 28 12 7 3 4 29 12 8 3 4 30 12 8 4 4 31 12 9 4 4 32 16 8 3 3 33 16 8 3 4 34 16 8 4 4 35 16 9 4 4 36 16 10 4 4 37 16 10 4 5 38 16 11 4 5 39 16 11 5 5 40 16 12 5 5 41 16 12 5 6 42 16 13 5 6 43 16 13 6 6 44 16 14 6 6 45 16 14 6 7 46 16 15 6 7 47 16 15 7 7 48 24 12 5 5 49 24 12 5 6 50 24 13 5 6 51 24 13 6 6 52 24 14 6 6 53 24 14 6 7 54 24 15 6 7 55 24 15 7 7 56 24 16 7 7 57 24 16 7 8 58 24 17 7 8 59 24 17 8 8 60 24 18 8 8 61 24 18 8 9 62 24 19 8 9 63 24 19 9 9 64 32 16 7 7 65 32 16 7 8 66 32 17 7 8 67 32 17 8 8 68 32 18 8 8 69 32 18 8 9 70 32 19 8 9 71 32 20 8 9 72 32 20 8 10 MySQL Cluster NDB 7.3 이상에서는 SUMA (복제) 스레드가 항상 하나 존재합니다.
LDM 스레드의 수가
NoOfFragmentLogParts
를 초과하지 않도록해야합니다. 따라서이 매개 변수의 값이 기본 (4)의 경우는MaxNoOfExecutionThreads
을 16 이상으로 설정하면이 값도 늘려야합니다. 즉,NoOfFragmentLogParts
을 위의 표에 나타난MaxNoOfExecutionThreads
이 매개 변수의 값에 대응하는 LDM 스레드 수의 값으로 설정하십시오.스레드 유형은이 섹션 뒷부분합니다 (
ThreadConfig
를 참조하십시오).이 매개 변수를 허용 범위를 벗어난 값으로 설정하면 관리 서버 시작이 중단되고 다음 오류가 발생합니다 : Error line
Number
: Illegal valuevalue
for parameter MaxNoOfExecutionThreads .MaxNoOfExecutionThreads
는 값 0 또는 1은NDB
내부에서 2로 반올림되기 때문에 2이 매개 변수의 디폴트 값 및 최소값으로 간주됩니다.MaxNoOfExecutionThreads
는 일반적으로 사용 가능한 CPU 스레드 수와 동일한 값으로 설정하고 각 유형의 스레드 수를 일반적인 워크로드에 맞게 할당하는 것을 목적으로하고 있습니다. 지정된 CPU에 특정 스레드를 할당하지는 않습니다. 제공되는 설정을 변경하는 것이 바람직하거나 스레드를 CPU에 바인딩하려면 대신 필요한 유형, CPU 또는 둘 다에 직접 스레드를 할당 할 수ThreadConfig
을 사용하도록하십시오.멀티 스레드 데이터 노드 프로세스는 적어도 여기에 나타내는 5 개의 스레드를 항상 생성합니다.
1 개의 로컬 쿼리 처리기 (LDM) 스레드
1 개의 트랜잭션 코디네이터 (TC) 스레드
1 개의 전송 스레드
(이 섹션의 다른 곳에서 설명하도록 별도의 전송 스레드를 사용하지 않도록 할 수 있습니다.)
1 개의 수신 스레드
1 개의 서브 스크립 션 관리자 (SUMA 또는 복제) 스레드
LDM 스레드의 수를 변경하려면이 매개 변수와
ThreadConfig
중 어느 것을 사용하여 변경하는 경우에도 항상 시스템을 다시 시작해야합니다. 클러스터의IndexMemory
의 사용률이 50 %를 초과하는 경우이를 변경하려면 클러스터의 초기 다시 시작해야합니다. (이런 경우는 최대 30-35 %의IndexMemory
사용률이 권장됩니다.) 그렇지 않으면 노드간에 리소스 활용도 및 LDM 스레드 할당의 균형을 유지하지 못하고, 결과적으로 LDM 스레드의 이용이 불충분하거나 과도하게되고, 결국 데이터 노드에 오류가 발생합니다.NoOfFragmentLogParts
Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 numeric 4 4, 8, 12, 16 IN NDB 7.3.3 numeric 4 4, 8, 12, 16, 24, 32 IN 이 ndbmtd 에 속하는 Redo 로그의 로그 파일 그룹의 수를 설정합니다. MySQL Cluster NDB 7.3.3 이전에는이 값은 4에서 16까지 (이들을 포함) 4의 짝수 배수 여야합니다. MySQL Cluster NDB 7.3.3 이상에서 최대 32입니다. 이전과 마찬가지로, 값은 4의 짝수 배수 여야합니다.
ndbmtd 가 사용하는 LQH 스레드의 수가
NoOfFragmentLogParts
를 초과하지 않도록해야합니다. 또한MaxNoOfExecutionThreads
을 늘리면이 수가 증가하는 경우가 있습니다. 자세한 내용은이 매개 변수의 설명을 참조하십시오.ThreadConfig
Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 string '' ... IS 이 매개 변수는 ndbmtd 에서 다른 유형의 스레드를 다른 CPU에 할당하는 데 사용됩니다. 이 값은 다음 구문을 가지는 형식의 문자열입니다.
ThreadConfig :=
entry
[,entry
[,...]]entry
:=type
={param
[,param
[,...]]}type
:= ldm | main | recv | send | rep | ioparam
:= count=number
| cpubind=cpu_list
매개 변수의 목록을 둘러싸는 중 괄호 (
{
...}
)는 목록에 매개 변수가 1 개 밖에없는 경우에도 필요합니다.param
(매개 변수)는 특정 유형의 스레드 수 (count
) 특정 유형의 스레드가 바인딩되는 CPU (cpubind
) 또는 둘 모두를 지정합니다.type
속성은 NDB 스레드 유형을 나타냅니다. MySQL Cluster NDB 7.3 이상에서 지원되는 스레드 유형과 각 유형에 허용되는count
값의 범위를 다음 목록을 보여줍니다.ldm
: 데이터를 처리하는 로컬 쿼리 처리기 (DBLQH
커널 블록). 사용되는 LDM 스레드의 수가 많을수록 데이터가 더 높은 분할됩니다. 각 LDM 스레드에 고유 한 데이터 및 인덱스 파티션 세트와 고유의 Redo 로그가 보존됩니다. MySQL Cluster NDB 7.3.3 이후에서는 이러한 스레드의 최대 수는 32입니다. MySQL Cluster NDB 7.3.2 이전 버전에서는 최대 16입니다.중요LDM 스레드의 수를 변경하려면 시스템을 재부팅 클러스터 작업에 효과적이고 안전하게 할 필요가 있습니다. (이것은
MaxNoOfExecutionThreads
를 사용하여 실행하는 경우에도 적용됩니다.)IndexMemory
의 사용률이 50 %를 초과하는 경우에는 클러스터의 초기 다시 시작해야합니다. 이러한 경우IndexMemory
의 사용률을 최대 30-35 %에하는 것이 좋습니다. 그렇지 않은 경우는IndexMemory
및DataMemory
활용도 및 LDM 스레드 노드 사이의 할당 균형을 잡지 못하고 결국은 데이터 노드의 장애로 이어질 수 있습니다.tc
: 진행중인 트랜잭션의 상태를 포함 트랜잭션 코디네이터 스레드 (DBTC
커널 블록). MySQL Cluster NDB 7.3에서는 TC 스레드 수를 구성 할 수 있습니다. MySQL Cluster NDB 7.3.3 이상에서 총 32 개가 사용 가능합니다. 이전 16 개였습니다.새로운 트랜잭션을 각각 하나의 새로운 TC 스레드에 적절하게 할당 할 수 있습니다. 대부분의 경우이 실행이 보장되는 두 개의 LDM thread에 대해서 하나의 TC 스레드 충분합니다. 읽기의 수에 비해 쓰기의 수가 적은 경우에는 4 개의 LQH 스레드 당 1 개의 TC thread가 있으면 트랜잭션 상태를 유지할 수 가능성이 있습니다. 반대로 매우 많은 업데이트를 수행하는 응용 프로그램은 LDM 스레드에 대한 TC 스레드의 비율을 1에 가깝게 (예를 들어, 4 개의 LDM thread에 대해서 TC 스레드를 3 개로한다)해야하는 경우가 있습니다.
범위 : ( NDB 7.3.3 이후 ) 1-32 ( NDB 7.3.2 이전 ) 1-16.
main
: 스키마 관리를 제공하는 데이터 사전 및 트랜잭션 코디네이터 (DBDIH
및DBTC
커널 블록). 이것은 항상 하나의 전용 스레드에서 처리됩니다.범위 : 1 만.
recv
: 수신 스레드 (CMVMI
커널 블록). 각 수신 스레드는 MySQL Cluster 내의 다른 노드와 통신하기위한 하나 이상의 소켓 (노드 당 1 소켓)을 처리합니다. MySQL Cluster NDB 7.3 이상에서는 여러받는 스레드가 지원됩니다. MySQL Cluster NDB 7.3.2 이전 버전에서는 이러한 스레드의 최대 수는 8입니다. MySQL Cluster NDB 7.3.3 이상에서 최대 16입니다.범위 : ( NDB 7.3.3 이후 ) 1-16 ( NDB 7.3.2 이전 ) 1-8.
send
: 전송 스레드 (CMVMI
커널 블록). 처리량을 향상시키기 위해 하나 이상의 (최대 8 개)의 독립적 인 전용 스레드에서 전송을 실행할 수 있습니다.이전에는 모든 스레드가 자신의 전송을 직접 처리하고있었습니다. 지금도 전송 스레드 수를 0으로 설정하여이를 수행 할 수 있습니다 (
MaxNoOfExecutionThreads
를 9로 설정 한 경우에도이 이루어집니다). 이렇게하면 처리량에 부정적인 영향을 미칠 수 있지만, 경우에 따라서는 대기 시간이 줄어들 가능성도 있습니다.범위 : ( NDB 7.3.3 이후 ) 0-16 ( NDB 7.3.2 이전 ) 0-8.
rep
: 복제 스레드 (SUMA
커널 블록). 비동기 복제 작업은 항상 하나의 전용 스레드에서 처리됩니다.범위 : 1 만.
io
: 파일 시스템 및 기타 작업. 이들은 까다로운 작업이 아니라 항상 하나의 I / O 전용 스레드에서 함께 처리됩니다.범위 : 1 만.
Simple examples:
# Example 1. ThreadConfig=ldm={count=2,cpubind=1,2},main={cpubind=12},rep={cpubind=11} # Example 2. Threadconfig=main={cpubind=0},ldm={count=4,cpubind=1,2,5,6},io={cpubind=3}
일반적으로 스레드의 사용법을 구성 할 때 데이터 노드 호스트의 하나 이상의 CPU를 운영 체제 및 기타 작업을 위해 예약합니다. 따
라서 24 개의 CPU를 탑재 한 호스트 머신에서 20 개의 CPU 스레드 (8 개 LDM 스레드 4 개의 TC 스레드 (LDM
스레드의 절반), 3 개의 송신 스레드 3 개의 수신 스레드 및 스키마 관리 비동기 복제 I / O 작업의 각각에 1 개의
스레드)를 사용할 수 있습니다 (다른 용도를 위해 4 개를 남깁니다). (이것은 MaxNoOfExecutionThreads
을 20으로 설정했을 때 사용되는 스레드의 분포와 거의 동일합니다.) 다음 ThreadConfig
설정은 이러한 할당을 실시하여 이러한 스레드를 특정 CPU에 바인딩합니다.
ThreadConfig=ldm{count=8,cpubind=1,2,3,4,5,6,7,8},main={cpubind=9},io={cpubind=9}, \ rep={cpubind=10},tc{count=4,cpubind=11,12,13,14},recv={count=3,cpubind=15,16,17}, \ send{count=3,cpubind=18,19,20}
대부분의 경우이 예시에서 한 것처럼, main (스키마 관리) 스레드 및 I / O 스레드는 동일한 CPU에 바인딩 할 수 있습니다
ThreadConfig
를 사용함으로써 얻을 수있는 높은 안정성을 활용하려면 CPU가 격리되어 인터럽트를 받거나 운영 체제에 따라 다른 작업을 스케줄되기도 할 필요가 있습니다. 많은 Linux 시스템에서는 / etc / sysconfig / irqbalance
의 IRQBALANCE_BANNED_CPUS
을 0xFFFFF0
로 설정하고 grub.conf
의 isolcpus
부트 옵션을 사용하여이를 수행 할 수 있습니다. 구체적인 내용은 운영 체제 또는 플랫폼 설명서를 참조하십시오.
디스크 데이터의 구성 매개 변수 디스크 데이터의 동작에 영향을주는 구성 매개 변수는 다음이 포함됩니다.
DiskPageBufferMemory
Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 bytes 64M 4M - 1T N 이것은 디스크의 페이지를 캐시하는 데 사용되는 공간의 양을 지정하는 것으로,
config.ini
파일의[ndbd]
또는[ndbd default]
섹션에서 설정됩니다. 이것은 바이트 단위로 측정됩니다. 각 페이지는 최대 32K 바이트를 차지합니다. 이것은 항상N
* 32K 바이트의 메모리가 클러스터 디스크 데이터 저장에 사용되는 것을 의미합니다 (N
은 음이 아닌 정수입니다).이 매개 변수의 기본값은
64M
(32K 바이트의 페이지 2000 개분)입니다.ndbinfo.diskpagebuffer
테이블을 쿼리하면 불필요한 디스크 검색을 최소화하기 위해이 매개 변수의 값을 늘려야 여부 판정 쉬워집니다. 자세한 내용은 섹션 18.5.10.12 "ndbinfo diskpagebuffer 테이블" 을 참조하십시오.SharedGlobalMemory
Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 bytes 128M 0 - 64T N 이 매개 변수는 테이블 공간, 로그 파일 그룹
Undo
파일 및 데이터 파일의 로그 버퍼 디스크 작업 (페이지 요청과 대기 큐 등) 및 메타 데이터에 사용되는 메모리 양을 지정합니다. 이 공유 글로벌 메모리 풀에서CREATE LOGFILE GROUP
및ALTER LOGFILE GROUP
문에서 사용되는INITIAL_SIZE
및UNDO_BUFFER_SIZE
옵션 (InitialLogFileGroup
데이터 노드 구성 매개 변수의 설정에 의해 나타나는 이러한 옵션의 기본값을 포함)의 메모리 요구 사항을 충족하기 위해 사용되는 메모리도 제공됩니다.SharedGlobalMemory
는config.ini
구성 파일의[ndbd]
또는[ndbd default]
섹션으로 설정할 수 바이트 단위로 측정됩니다.기본값은
128M
입니다.DiskIOThreadPool
Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 threads 2 0 - 4294967039 (0xFFFFFEFF) N 이 매개 변수는 디스크 데이터 파일에 액세스하는 데 사용되는 미 바인드 스레드 수를 지정합니다.
DiskIOThreadPool
가 도입되기 전에 디스크 데이터 파일 당 하나의 스레드 만 생성되지 않았기 때문에 특히 매우 큰 데이터 파일을 사용할 때 성능 문제가 발생할 수있었습니다.DiskIOThreadPool
을 사용하면 예를 들어, 병렬로 동작하는 다중 스레드를 사용하여 하나의 큰 데이터 파일에 액세스 할 수 있습니다.이 매개 변수는 디스크 데이터 I / O 스레드에만 적용됩니다.
이 매개 변수의 최적 값은 사용하는 하드웨어 구성에 따라 다음과 같은 요소를 포함합니다.
디스크 데이터 파일의 물리적 분포 데이터 파일 Undo 로그 파일 및 데이터 노드 파일 시스템을 하나의 물리적 디스크에 배치하여 성능을 향상시킬 수 있습니다. 이러한 일부 또는 모든 파일을 사용하여 이렇게하면 각 디스크의 파일을 별도의 스레드에서 처리 할 수 있도록하기 위해
DiskIOThreadPool
를 큰 값으로 설정할 수 있습니다.디스크의 성능과 유형 디스크 데이터 파일의 처리 용으로 제공 할 수있는 스레드 수는 디스크의 속도와 처리량에 따라 달라집니다. 디스크의 속도가 빠르고, 처리량이 높을수록 더 많은 I / O 스레드를 사용할 수 있습니다. 당사의 테스트 결과는 기존의 디스크보다 솔리드 스테이트 디스크 드라이브 것이 (즉
DiskIOThreadPool
의 값이 클수록) 훨씬 더 많은 디스크 I / O 스레드를 처리 할 수있는 것을 나타내고 있습니다.
이 매개 변수의 기본값은 2입니다.
디스크 데이터의 파일 시스템 매개 변수 다음 목록의 매개 변수를 사용하면 심볼릭 링크를 사용하지 않고 MySQL Cluster 디스크 데이터 파일을 특정 디렉토리에 배치 할 수 있습니다.
FileSystemPathDD
Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 filename [see text] ... IN 이 매개 변수를 지정하면 MySQL Cluster 디스크 데이터의 데이터 파일 및 Undo 로그 파일이 지정된 디렉토리에 배치됩니다. 데이터 파일 Undo 로그 파일 또는 둘 모두를 무시하려면
FileSystemPathDataFiles
,FileSystemPathUndoFiles
또는 둘 다의 값을 이러한 매개 변수의 설명을 따릅니다. 데이터 파일은CREATE TABLESPACE
또는ALTER TABLESPACE
문에ADD DATAFILE
절에 경로를 지정하고 Undo 로그 파일은CREATE LOGFILE GROUP
또는ALTER LOGFILE GROUP
문ADD UNDOFILE
절에서 경로를 지정하여 재정의 할 수 있습니다.FileSystemPathDD
가 지정되어 있지 않은 경우는FileSystemPath
가 사용됩니다.특정 데이터 노드에서
FileSystemPathDD
디렉토리가 지정된 경우 (config.ini
파일의[ndbd default]
섹션에서이 매개 변수가 지정된 경우를 포함),--initial
을 지정하고 데이터 노드를 시작하면 디렉토리 모든 파일이 삭제됩니다.FileSystemPathDataFiles
Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 filename [see text] ... IN 이 매개 변수를 지정하면 MySQL Cluster 디스크 데이터의 데이터 파일이 지정된 디렉토리에 배치됩니다. 이것은
FileSystemPathDD
에 설정된 값을 대체합니다. 특정 데이터 파일의 매개 변수를 재정의하려면 해당 데이터 파일을 만드는 데 사용되는CREATE TABLESPACE
또는ALTER TABLESPACE
문에ADD DATAFILE
절에서 경로를 지정합니다.FileSystemPathDataFiles
가 지정되어 있지 않은 경우는FileSystemPathDD
가 사용됩니다 (FileSystemPathDD
도 설정되어 있지 않은 경우는FileSystemPath
가 사용됩니다).특정 데이터 노드에서
FileSystemPathDataFiles
디렉토리가 지정된 경우 (config.ini
파일의[ndbd default]
섹션에이 매개 변수가 지정된 경우를 포함),--initial
을 지정하고 그 데이터 노드를 시작하면 디렉토리 내부의 모든 파일이 삭제됩니다.FileSystemPathUndoFiles
Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 filename [see text] ... IN 이 매개 변수를 지정하면 MySQL Cluster 디스크 데이터 Undo 로그 파일이 지정된 디렉토리에 배치됩니다. 이것은
FileSystemPathDD
에 설정된 값을 대체합니다. 특정 데이터 파일에 대해이 매개 변수를 무시하려면 해당 데이터 파일을 만드는 데 사용되는CREATE LOGFILE GROUP
또는CREATE LOGFILE GROUP
문ADD UNDO
절에 경로를 지정합니다.FileSystemPathUndoFiles
가 지정되어 있지 않은 경우는FileSystemPathDD
가 사용됩니다 (FileSystemPathDD
도 설정되어 있지 않은 경우는FileSystemPath
가 사용됩니다).특정 데이터 노드에서
FileSystemPathUndoFiles
디렉토리가 지정된 경우 (config.ini
파일의[ndbd default]
섹션에이 매개 변수가 지정된 경우를 포함),--initial
을 지정하고 그 데이터 노드를 시작하면 디렉토리 내부의 모든 파일이 삭제됩니다.자세한 내용은 섹션 18.5.12.1 "MySQL Cluster 디스크 데이터 객체" 를 참조하십시오.
디스크 데이터 오브젝트 생성 매개 변수
다음의 2 개의 매개 변수를 사용하면 클러스터를 처음 시작할 때 SQL 문을 사용하지 않고 디스크 데이터 로그 파일 그룹, 테이블 스페이스 또는 둘 모두를 만들 수 있습니다.
InitialLogFileGroup
Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 string [see text] ... S 이 매개 변수를 사용하여 클러스터의 초기 시작의 실행시에 생성되는 로그 파일 그룹을 지정할 수 있습니다.
InitialLogFileGroup
는 여기에 같이 지정됩니다.InitialLogFileGroup = [name=
name
;] [undo_buffer_size=size
;]file-specification-list
file-specification-list
:file-specification
[;file-specification
[; ...]]file-specification
:filename
:size
로그 파일 그룹의
name
은 옵션이며 기본값은DEFAULT-LG
합니다.undo_buffer_size
도 옵션입니다. 생략하면 기본값은64M
입니다.file-specification
은 각각 하나의 Undo 로그 파일에 대응하고file-specification-list
에 하나 이상 지정해야합니다. Undo 로그 파일은FileSystemPath
,FileSystemPathDD
및FileSystemPathUndoFiles
에 설정된 값에 따라CREATE LOGFILE GROUP
또는ALTER LOGFILE GROUP
문의 결과로 작성된 경우처럼 배치됩니다.다음에 대해 생각합니다.
InitialLogFileGroup = name=LG1; undo_buffer_size=128M; undo1.log:250M; undo2.log:150M
이것은 다음의 SQL 문에 해당합니다.
CREATE LOGFILE GROUP LG1 ADD UNDOFILE 'undo1.log' INITIAL_SIZE 250M UNDO_BUFFER_SIZE 128M ENGINE NDBCLUSTER; ALTER LOGFILE GROUP LG1 ADD UNDOFILE 'undo2.log' INITIAL_SIZE 150M ENGINE NDBCLUSTER;
이 로그 파일 그룹은
--initial
을 지정하고 데이터 노드를 시작할 때 작성됩니다.초기의 로그 파일 그룹의 자원은
SharedGlobalMemory
데이터 노드 구성 매개 변수의 값으로 크기가 결정되는 글로벌 메모리 풀에서 가져옵니다. 이 파라미터의 설정 값이 너무 작아 로그 파일 그룹의 초기 크기 또는 Undo 버퍼 크기로InitialLogFileGroup
에 설정된 값이 너무 큰 경우는 클러스터 시작시 기본 로그 파일 그룹이 생성되지 않거나 클러스터 시작 가 완전히 실패 할 수 있습니다.이 매개 변수를 사용하는 경우 항상
config.ini
파일의[ndbd default]
섹션에 설정하도록하십시오. 다른 데이터 노드에 다른 값을 설정 한 경우의 MySQL Cluster의 동작은 정의되어 있지 않습니다.InitialTablespace
Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 string [see text] ... S 이 매개 변수를 사용하여 클러스터의 초기 부팅 할 때 생성되는 MySQL Cluster 디스크 데이터 테이블 스페이스를 지정할 수 있습니다.
InitialTablespace
는 여기에 같이 지정됩니다.InitialTablespace = [name=
name
;] [extent_size=size
;]file-specification-list
테이블 스페이스의
name
은 옵션이며 기본값은DEFAULT-TS
입니다.extent_size
도 옵션입니다. 기본값은1M
입니다.file-specification-list
에는InitialLogfileGroup
파라미터에 나타난 것과 동일한 구문이 사용됩니다. 유일한 차이점은InitialTablespace
에서 사용되는file-specification
이 각각 하나의 데이터 파일에 해당하는 것입니다.file-specification-list
에는 최소한 하나를 지정해야합니다. 데이터 파일은FileSystemPath
,FileSystemPathDD
및FileSystemPathDataFiles
에 설정된 값에 따라CREATE TABLESPACE
또는ALTER TABLESPACE
문의 결과로 작성된 경우처럼 배치됩니다.예를 들어,
config.ini
파일의[ndbd default]
섹션에InitialTablespace
을 지정하는 다음 줄 생각합니다 (InitialLogfileGroup
뿐만 아니라 다른 데이터 노드에 다른 값을 설정했을 때의 MySQL Cluster의 동작은 정의되어 있지 않기 때문에, 이 매개 변수는 항상[ndbd default]
섹션에 설정하도록하십시오).InitialTablespace = name=TS1; extent_size=8M; data1.dat:2G; data2.dat:4G
이것은 다음의 SQL 문에 해당합니다.
CREATE TABLESPACE TS1 ADD DATAFILE 'data1.dat' EXTENT_SIZE 8M INITIAL_SIZE 2G ENGINE NDBCLUSTER; ALTER TABLESPACE TS1 ADD DATAFILE 'data2.dat' INITIAL_SIZE 4G ENGINE NDBCLUSTER;
이 테이블 공간은
--initial
을 지정하고 데이터 노드를 시작할 때 생성 된 후 MySQL Cluster 디스크 데이터 테이블을 만들 때마다 사용할 수 있습니다.
디스크 데이터와 GCP 중지 오류 디스크 데이터 테이블을 사용할 때 발생하는 오류 : Node nodeid
Killed this node Because GCP stop was detected (오류 2303) 등은 종종 " GCP 중지 오류 " 라고합니다. 이러한 오류는 Redo 로그가 충분한 속도로 디스크에 플러시되지 않은 경우에 발생합니다. 이것은 일반적으로 디스크의 속도가 낮고, 디스크의 처리량이 충분하지 않은 것이 원인입니다.
빠른 디스크를 사용하여 디스크 데이터 파일을 데이터 노드 파일 시스템과는 다른 디스크에 배치함으로써 이러한 오류를 피하는데 도움이됩니다. TimeBetweenGlobalCheckpoints
값을 줄이면 글로벌 체크 포인트마다 기록되는 데이터의 양이 줄어 쉽기 때문에 글로벌 체크 포인트를 쓰려고 할 때 Redo 로그 버퍼 오버플로를 어느 정도 방지 할 수 있습니다. 그러나이 값을 줄이면 GCP를 쓸 수있는 시간도 줄어들 기 때문에주의가 필요합니다.
위의 DiskPageBufferMemory
대해 나타낸 고려 사항 이외에 DiskIOThreadPool
구성 매개 변수를 올바르게 설정하는 것도 매우 중요합니다. DiskIOThreadPool
설정 값이 너무 크면 GCP 중지 오류가 발생할 가능성이 매우 높아집니다 (Bug # 37227).
GCP의 정지는 저장 또는 위탁 제한에 의해 발생할 수 있습니다. TimeBetweenEpochsTimeout
데이터 노드 구성 매개 변수는 커밋 제한 시간을 지정합니다. 그러나이 매개 변수를 0으로 설정하면 두 가지 유형의 제한을 해제 할 수 있습니다.
전송 버퍼 메모리 할당을 구성하는 파라미터 전송 버퍼 메모리는 모든 트랜스 포터간에 공유되는 메모리 풀에서 동적으로 할당됩니다. 이것은 전송 버퍼의 크기를 원하는대로 조정할 수있는 것을 의미합니다. (이전에는 클러스터의 모든 노드에서 NDB 커널의 크기가 고정 송신 버퍼를 사용했습니다. 이것은 노드가 시작될 때 할당 노드의 실행 중은 변경할 수 없습니다.) TotalSendBufferMemory
및 OverLoadLimit
데이터 노드 구성 매개 변수를 사용하여이 메모리 할당 제한을 설정할 수 있습니다. 이러한 파라미터 (및 SendBufferMemory
) 사용에 대한 자세한 내용은 섹션 18.3.2.12 "MySQL Cluster의 전송 버퍼 매개 변수 구성" 을 참조하십시오.
ExtraSendBufferMemory
이 매개 변수는
TotalSendBufferMemory
,SendBufferMemory
또는 둘 모두를 사용하여 설정된 메모리 이외에 할당 트랜스 포터 전송 버퍼 메모리 양을 지정합니다.TotalSendBufferMemory
이 매개 변수는 MySQL Cluster NDB 6.4.0 이상에서 사용 가능합니다. 이것은 모든 구성된 트랜스 포터간에 공유되는 송신 버퍼 메모리의이 노드에 할당 된 메모리 양을 지정하는 데 사용됩니다.
이 매개 변수를 설정하는 경우 허용되는 최소값은 256K 바이트 최대 값은 4294967039입니다.
ReservedSendBufferMemory
이 매개 변수는 MySQL Cluster NDB 6.4.0 이후
NDBCLUSTER
소스 코드 내에 있습니다. 그러나 현재는 활성화되어 있지 않습니다.이 매개 변수는 MySQL Cluster NDB 7.2에서 사용되지 않으며, MySQL Cluster의 향후 버전에서 제거 될 예정입니다 (Bug # 11760629, Bug # 53053).
TotalSendBufferMemory
동작과 사용 및 MySQL Cluster에서의 전송 버퍼 메모리 매개 변수 구성 자세한 내용은 섹션 18.3.2.12 "MySQL Cluster의 전송 버퍼 매개 변수 구성" 을 참조하십시오.
섹션 18.5.13 "MySQL Cluster 데이터 노드의 온라인 추가" 를 참조하십시오.
Redo 로그의 오버 커밋 처리 Redo 로그를 디스크에 플러시하는 시간이 너무 긴 경우의 데이터 노드에 의한 조작의 처리를 제어 할 수 있습니다. 이것은 특정 Redo 로그의 플래시가 RedoOverCommitLimit
초보다 긴 시간이 지남에 RedoOverCommitCounter
회 이상의 횟수만큼 수행 보류중인 트랜잭션이 중단 된 경우에 발생합니다. 이것이 발생하면 트랜잭션을 보낸 API 노드는 커밋되는 것이었다 작업을 ( DefaultOperationRedoProblemAction
에 지정된대로) 큐에 배치하여 다시 시도하거나 취소하는 것으로 처리 할 수 있습니다. API 노드에서이 작업을 수행하기 전에 초과가 허용되는 시간과 횟수를 설정하기위한 데이터 노드 구성 매개 변수의 다음 목록에서 설명합니다.
RedoOverCommitCounter
Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 numeric 3 0 - 4294967039 (0xFFFFFEFF) N 특정 Redo 로그를 디스크에 쓰려고 할 때
RedoOverCommitLimit
을 초과 한 횟수가이 횟수를 초과하면 결과적으로 커밋되지 않은 트랜잭션이 중단 된 트랜잭션의 발생원 인 API 노드는 이러한 트랜잭션을 구성하는 작업을DefaultOperationRedoProblemAction
의 값에 따라 (작업을 큐에 넣고 다시 시도하거나 중지) 처리합니다.RedoOverCommitCounter
의 기본값은 3입니다. 0으로 설정하면이 제한이 해제됩니다.RedoOverCommitLimit
Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 seconds 20 0 - 4294967039 (0xFFFFFEFF) N 이 매개 변수는 특정 Redo 로그를 디스크에 쓰려고 할 때 시간 초과의 상한 (초 단위)을 설정합니다. 데이터 노드가이 Redo 로그를 플래시하려고
RedoOverCommitLimit
보다 오랜 시간이 걸린 횟수가 저장되어RedoOverCommitCounter
과 비교됩니다. 플래시 시간이 너무 횟수가이 파라미터의 값보다 많아졌다 때는 플래시 타임 아웃의 결과로 커밋되지 않은 트랜잭션이 중단됩니다. 이것이 발생하면 트랜잭션의 발생 원인 인 API 노드는 이러한 트랜잭션을 구성하는 작업을DefaultOperationRedoProblemAction
의 설정에 따라 (작업을 큐에 넣고 다시 시도하거나 중지하여) 처리합니다.기본적으로
RedoOverCommitLimit
은 20 초입니다. 0으로 설정하면 Redo 로그의 플래시 타임 아웃 체크가 해제됩니다. 이 매개 변수는 MySQL Cluster NDB 7.1.10에서 추가되었다.
Controlling restart attempts. MaxStartFailRetries
및 StartFailRetryDelay
데이터 노드 구성 매개 변수를 사용하면 데이터 노드가 시작 실패시 다시 시도를 제어 할 수 있습니다.
MaxStartFailRetries
는 데이터 노드의 시작을 중지 할 때까지 열리는 재 시도의 총 수를 제한합니다. StartFailRetryDelay
은 재시도 사이의 시간 (초)을 설정합니다. 이러한 매개 변수를 여기에 나타냅니다.
StartFailRetryDelay
Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 unsigned 0 0 - 4294967039 (0xFFFFFEFF) N 이 매개 변수를 사용하여 데이터 노드에 의한 기동 실패시 다시 시도 사이의 시간 (초)을 설정합니다. 기본값은 0 (지연 없음)입니다.
StopOnError
가 0이 아닌 경우,이 매개 변수와MaxStartFailRetries
모두 무시됩니다.MaxStartFailRetries
Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 unsigned 3 0 - 4294967039 (0xFFFFFEFF) N 이 매개 변수를 사용하여 데이터 노드에 의한 기동 실패시 다시 시도 횟수를 제한합니다. 기본값은 3 회입니다.
StopOnError
가 0이 아닌 경우,이 매개 변수와StartFailRetryDelay
모두 무시됩니다.
NDB 인덱스 통계의 매개 변수 다음 목록의 매개 변수는 MySQL Cluster NDB 7.2.1에서 도입 된 NDB 인덱스 통계의 생성에 관련이 있습니다.
IndexStatAutoCreate
Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 boolean false false, true S 인덱싱 된 경우 자동 통계 수집을 활성화하거나 비활성화합니다. 기본적으로 비활성화되어 있습니다.
이 매개 변수는 MySQL Cluster NDB 7.2.1에서 추가되었습니다IndexStatAutoUpdate
Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 boolean false false, true S 인덱스 변경 모니터링을 활성화 또는 비활성화하고 변경이 감지되면 자동 통계 업데이트를 트리거합니다. 업데이트를 트리거하는 데 필요한 변경의 양과 수준은
IndexStatTriggerPct
및IndexStatTriggerScale
옵션의 설정에 의해 결정됩니다.이 매개 변수는 MySQL Cluster NDB 7.2.1에서 추가되었습니다.
IndexStatSaveSize
Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 bytes 32768 0 - 4294967039 (0xFFFFFEFF) IN NDB
시스템 테이블 및 mysqld 메모리 캐시에 저장되는 특정 인덱스의 통계에 허용되는 최대 공간 (바이트 단위). 이것은IndexMemory
를 소비합니다.크기 제한에 관계없이 항상 적어도 1 개의 샘플이 생성됩니다. 이 크기는
IndexStatSaveScale
의해 조정됩니다.이 매개 변수는 MySQL Cluster NDB 7.2.1에서 추가되었습니다.
대규모 인덱스에서는
IndexStatSaveSize
에 지정된 크기가IndexStatTriggerPct
에 0.01를 곱한 값으로 조정됩니다. 이것은 또한 인덱스 크기의 바닥 2의 대수를 곱한됩니다.IndexStatTriggerPct
를 0으로 설정하면이 조정이 비활성화됩니다.IndexStatSaveScale
Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 percentage 100 0 - 4294967039 (0xFFFFFEFF) IN 대규모 인덱스에서는
IndexStatSaveSize
에 지정된 크기가IndexStatTriggerPct
에 0.01를 곱한 값으로 조정됩니다. 이것은 또한 인덱스 크기의 바닥 2의 대수를 곱한됩니다.IndexStatTriggerPct
를 0으로 설정하면이 조정이 비활성화됩니다.IndexStatTriggerPct
Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 percentage 100 0 - 4294967039 (0xFFFFFEFF) IN 인덱스 통계 업데이트를 트리거하는 업데이트의 변경 비율. 이 값은
IndexStatTriggerScale
의해 조정됩니다. 이 트리거를 완전히 비활성화하려면IndexStatTriggerPct
를 0으로 설정합니다.이 매개 변수는 MySQL Cluster NDB 7.2.1에서 추가되었습니다.
IndexStatTriggerScale
Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 percentage 100 0 - 4294967039 (0xFFFFFEFF) IN 대규모 인덱스에서는이 금액에 0.01를 곱한 값으로
IndexStatTriggerPct
를 조정합니다. 값 0으로 조정이 비활성화됩니다.이 매개 변수는 MySQL Cluster NDB 7.2.1에서 추가되었습니다.
IndexStatUpdateDelay
Effective Version Type/Units Default Range/Values Restart Type NDB 7.3.0 seconds 60 0 - 4294967039 (0xFFFFFEFF) IN 특정 인덱스의 자동 인덱스 통계 업데이트 사이의 최소 지연 (초)입니다. 이 변수를 0으로 설정하면 지연이 해제됩니다. 기본값은 60 초입니다.
이 매개 변수는 MySQL Cluster NDB 7.2.1에서 추가되었습니다.