18.4.1 ndbd - MySQL Cluster 데이터 노드 데몬
ndbd는 NDB Cluster 스토리지 엔진을 사용하여 테이블의 모든 데이터를 처리하는 데 사용되는 프로세스입니다. 이것은 분산 트랜잭션 처리, 노드 복구, 디스크 검사 점 수행 온라인 백업 및 관련 작업을 데이터 노드가 할 수 있도록하는 과정입니다.
MySQL Cluster는 일련의 ndbd 프로세스가 데이터를 처리하기 위해 함께 작동합니다. 이러한 프로세스는 동일한 컴퓨터 (호스트) 나 별도의 컴퓨터에서 실행할 수 있습니다. 데이터 노드와 Cluster 호스트의 통신 정보를 구성 할 수 있습니다.
다음 표는 MySQL Cluster 데이터 노드 프로그램 ndbd에 특정 명령 옵션이 포함되어 있습니다. 추가 설명이 표 다음에 있습니다. 대부분의 MySQL Cluster 프로그램 (ndbd 포함)에 공통되는 옵션은 섹션 18.4.27 "MySQL Cluster 프로그램에 공통 옵션 - MySQL Cluster 일반적인 프로그램 옵션" 을 참조하십시오.
표 18.77이 표는 ndbd 프로그램의 명령 행 옵션에 대해 설명하고 있습니다
형식 | 설명 | 추가 또는 삭제 |
---|---|---|
| ndbd의 초기 기동을 실행합니다 (파일 시스템 청소 포함). 이 옵션을 사용하기 전에 문서를 참조하십시오 | 모든 MySQL 5.6 기반 자료 |
| ndbd를 즉시 시작하지 않습니다. ndbd는 ndb_mgm에서 시작 명령을 기다립니다 | 모든 MySQL 5.6 기반 자료 |
| ndbd를 데몬으로 시작합니다 (기본값). 재정의하려면 --nodaemon을 지정합니다 | 모든 MySQL 5.6 기반 자료 |
| ndbd를 데몬으로 시작하지 않습니다. 테스트를 위해 제공되고 있습니다 | 모든 MySQL 5.6 기반 자료 |
| ndbd를 포 그라운드에서 실행합니다. 디버깅을 위해 제공되고 있습니다 (--nodaemon의 의미를 포함합니다) | 모든 MySQL 5.6 기반 자료 |
| 이러한 데이터 노드가 시작되는 것을 기다리지 않습니다 (노드 ID의 쉼표로 구분 된 목록을 가지고 있습니다). --ndb-nodeid도 사용해야합니다. | 모든 MySQL 5.6 기반 자료 |
| 부분적인 초기 시작을 실행합니다 (--nowait-nodes이 필요합니다) | 모든 MySQL 5.6 기반 자료 |
| 로컬 바인딩 주소 | 모든 MySQL 5.6 기반 자료 |
| 데이터 노드 프로세스를 Windows 서비스로 설치하는 데 사용합니다. Windows 이외의 플랫폼에 적용되지 않습니다. | 모든 MySQL 5.6 기반 자료 |
| 이전 Windows 서비스로 설치 된 데이터 노드 프로세스를 제거하는 데 사용합니다. Windows 이외의 플랫폼에 적용되지 않습니다. | 모든 MySQL 5.6 기반 자료 |
| 관리 서버에 연결을 시도하는 횟수. 무한 시도하는 경우는 -1을 설정합니다 | 모든 MySQL 5.6 기반 자료 |
| 관리 서버에 각 연결 시도 사이에 대기하는 시간 (초) | 모든 MySQL 5.6 기반 자료 |
이러한 모든 옵션은이 프로그램의 멀티 스레드 버전 (ndbmtd)에도 적용됩니다 "ndbd"을 "ndbmtd"으로 바꿀 수 있습니다 (이 섹션에서는 후자가 나오는 경우).
--bind-address
명령 줄 형식 --bind-address=name
허용되는 값 유형 string
기본 ndbd가 특정 네트워크 인터페이스 (호스트 이름 또는 IP 주소)에 바인드됩니다. 이 옵션의 기본값은 없습니다.
--daemon
,-d
명령 줄 형식 --daemon
허용되는 값 유형 boolean
기본 TRUE
ndbd 또는 ndbmtd 데몬 프로세스로 실행하도록 지시합니다. 이것은 기본 동작입니다.
--nodaemon
을 사용하면 프로세스가 데몬으로 실행되지 않습니다.Windows 플랫폼에서 ndbd 또는 ndbmtd을 실행하는 경우이 옵션은 효과가 없습니다.
--nodaemon
명령 줄 형식 --nodaemon
허용되는 값 유형 boolean
기본 FALSE
ndbd 또는 ndbmtd이 데몬 프로세스로 실행되지 않게됩니다. 이 옵션은
--daemon
옵션을 재정의합니다. 이것은 바이너리를 디버깅 할 때 출력을 화면으로 리디렉션하는 경우에 유용합니다.Windows에서 ndbd 및 ndbmtd의 기본 동작은 포 그라운드에서 실행이며, Windows 플랫폼에서는이 옵션은 효과가없고 필요하지 않습니다.
--foreground
명령 줄 형식 --foreground
허용되는 값 유형 boolean
기본 FALSE
주로 디버깅을 위해, ndbd 또는 ndbmtd가 포 그라운드 프로세스로 실행됩니다. 이 옵션은
--nodaemon
옵션의 의미를 포함합니다.Windows 플랫폼에서 ndbd 또는 ndbmtd을 실행하는 경우이 옵션은 효과가 없습니다.
--initial
명령 줄 형식 --initial
허용되는 값 유형 boolean
기본 FALSE
ndbd 초기 부팅을 수행하도록 지시합니다. 초기 시작하면 이전의 ndbd 인스턴스 복구를 위해 생성 된 파일이 삭제됩니다. 또한 복구 로그 파일이 다시 생성됩니다. 일부 운영 체제에서는이 작업에 상당한 시간이 소요됩니다.
--initial
을 지정한 시작은 ndbd 프로세스를 매우 특수한 상황에서 시작할 때만 사용합니다. 이것은이 옵션을 지정하면 MySQL Cluster 파일 시스템에서 모든 파일이 삭제되고 모든 Redo 로그 파일이 다시 생성되기 때문입니다. 그 상황을 보여줍니다.파일의 내용이 변경된 소프트웨어 업그레이드를 실행하는 경우.
새로운 버전의 ndbd 노드를 다시 시작하는 경우.
어떤 이유로 노드 또는 시스템의 재부팅이 반복 실패 할 경우 최후의 수단으로. 이 경우 데이터 파일이 손상되기 때문에이 노드는 데이터의 복원에 사용할 수 없습니다.
이 옵션을 사용하면
StartPartialTimeout
및StartPartitionedTimeout
구성 매개 변수의 효과가 없습니다.중요이 옵션은 다음 유형의 파일에는 영향을주지 않습니다.
영향을받는 노드가 이미 생성 된 백업 파일
MySQL Cluster 디스크 데이터 파일 ( 섹션 18.5.12 "MySQL Cluster 디스크 데이터 테이블" 을 참조하십시오).
이 옵션은 이미 실행되어있는 데이터 노드에서 시작 (또는 다시 시작) 된지 얼마 안된 데이터 노드에 의한 데이터의 복구에 영향을주지 않습니다. 이 데이터의 복구는 자동으로 이루어집니다 성공적으로 실행 된 MySQL Cluster에서 사용자가 작업을 할 필요가 없습니다.
클러스터를 처음 시작할 때 (즉, 데이터 노드 파일이 작성되기 전)에이 옵션을 사용할 수 있지만 그렇게 할 필요는 없습니다.
--initial-start
명령 줄 형식 --initial-start
허용되는 값 유형 boolean
기본 FALSE
이 옵션은 클러스터를 부분적으로 초기 부팅 할 때 사용합니다. 각 노드는이 옵션 및
--nowait-nodes
를 지정하여 시작하십시오.데이터 노드의 ID가 2,3,4 및 5 인 4 노드 클러스터가 노드 2, 4 및 5 만 사용하여 (즉, 노드 3을 제외하고) 부분적으로 초기 기동을 실행 한다고합니다.
shell>
ndbd --ndb-nodeid=2 --nowait-nodes=3 --initial-start
shell>ndbd --ndb-nodeid=4 --nowait-nodes=3 --initial-start
shell>ndbd --ndb-nodeid=5 --nowait-nodes=3 --initial-start
이 옵션을 사용하는 경우
--ndb-nodeid
옵션을 지정하여 시작하는 데이터 노드의 ID를 지정해야합니다.중요여러 관리 서버에서 구성된 클러스터를 모든 관리 서버가 온라인 않아도 시작할 수 있도록하는 데 사용할 수있는 ndb_mgmd의
--nowait-nodes
옵션이 옵션을 혼동하지 마십시오.--nowait-nodes=
node_id_1
[,node_id_2
[, ...]]명령 줄 형식 --nowait-nodes=list
허용되는 값 유형 string
기본 이 옵션은 클러스터가 시작하기 전에 대기하지 않는 데이터 노드의 목록을 지정합니다.
이것은 분할 된 상태의 클러스터를 시작하는 데 사용할 수 있습니다. 예를 들어 4 노드 클러스터에서 실행되는 데이터 노드 (노드 2,3,4 및 5)의 절반의 데이터 노드에서만 클러스터를 시작하려면
--nowait-nodes=3,5
를 지정하고 각 ndbd 프로세스를 시작합니다. 이 경우 클러스터는 노드 2와 노드 4가 연결되는 즉시 시작 노드 3과 노드 5가 접속하는 것을 (연결하지 않은 경우)StartPartitionedTimeout
밀리 초 대기하지 않습니다.앞의 예와 같은 클러스터를 하나의 ndbd을 제외하고 시작하는 경우 (예를 들어, 노드 3 호스트 시스템에서 하드웨어 오류가 발생하는 경우)는
--nowait-nodes=3
을 지정하고 노드 2, 4 및 5를 시작합니다. 클러스터는 노드 2, 4 및 5가 연결 되 자마자 시작 노드 3이 시작되는 것을 기다리지 않습니다.--nostart
,-n
명령 줄 형식 --nostart
허용되는 값 유형 boolean
기본 FALSE
ndbd 자동으로 시작하지 않도록 지시합니다. 이 옵션을 사용하면 ndbd는 관리 서버에 연결하고 거기에서 구성 데이터를 검색하고 통신 개체를 초기화합니다. 그러나 관리 서버에 의해 그렇게하도록 명시 적으로 요구 될 때까지 실행 엔진을 실제로 시작하지 않습니다. 이것은 관리 클라이언트에서 적절한
START
명령을 실행하여 수행됩니다 ( 섹션 18.5.2 "MySQL Cluster 관리 클라이언트 명령" 을 참조하십시오).--install[=
name
]명령 줄 형식 --install[=name]
플랫폼 별 Windows 허용되는 값 유형 boolean
기본 ndbd
ndbd가 Windows 서비스로 설치됩니다. 필요에 따라 서비스의 이름을 지정할 수 있습니다. 설정하지 않으면 서비스 이름은
ndbd
기본 설정됩니다. 다른 ndbd 프로그램 옵션은my.ini
또는my.cnf
구성 파일에 지정하는 것이 좋습니다되지만,--install
과 함께 사용할 수 있습니다. 그러나 그런 경우 Windows 서비스 설치가 성공하려면--install
옵션을 먼저 지정하고 다른 옵션을 지정해야합니다.일반적으로이 옵션을
--initial
옵션과 함께 사용하는 것은 권장하지 않습니다. 그로 인하여 서비스가 중지 및 시작 될 때마다 데이터 노드 파일 시스템이 삭제 및 재생성되기 때문입니다. 데이터 노드의 부팅에 영향을 다른 ndbd 옵션 (--initial-start
,--nostart
및--nowait-nodes
포함)을--install
과 함께 사용하는 경우, 그것을 할 것을 충분히 이해하고 발생할 수있는 결과에 대해 충분히 준비하고 있는지 제대로 확인하십시오.--install
옵션은 Windows 이외의 플랫폼에서는 효과가 없습니다.--remove[=
name
]명령 줄 형식 --remove[=name]
플랫폼 별 Windows 허용되는 값 유형 string
기본 ndbd
이전에 Windows 서비스로 설치 된 ndbd 프로세스를 제거합니다. 필요에 따라 제거 할 서비스의 이름을 지정할 수 있습니다. 설정하지 않으면 서비스 이름은
ndbd
기본 설정됩니다.--remove
옵션은 Windows 이외의 플랫폼에서는 효과가 없습니다.--connect-retries=
#
명령 줄 형식 --connect-retries=#
허용되는 값 유형 numeric
기본 12
최소 -1
최대 값 65535
데이터 노드가 시작할 때 관리 서버에 연결을 시도 할 횟수를 지정합니다. 이 옵션에 -1을 설정하면 데이터 노드가 무한대로 연결을 시도합니다. 기본값은 12 회 시도입니다. 각 시도 사이에 대기하는 시간은
--connect-delay
옵션에 의해 제어됩니다.--connect-delay=
#
명령 줄 형식 --connect-delay=#
허용되는 값 유형 numeric
기본 5
최소 0
최대 값 3600
시작할 때 관리 서버에 각 연결 시도 사이에 대기하는 시간을 결정합니다 (시도 사이의 시간은
--connect-retries
옵션에 의해 제어됩니다). 기본값은 5 회 시도입니다.이 옵션은 MySQL Cluster NDB 7.2.9에서 추가되었습니다.
ndbd는 config.ini
구성 파일의 DataDir
에서 지정된 디렉토리에 배치되는 일련의 로그 파일을 생성합니다.
이러한 로그 파일을 다음 나열합니다. node_id
는 노드의 고유 식별자입니다. node_id
는 노드의 고유 식별자를 나타냅니다. 예를 들어, ndb_2_error.log
는 노드 ID가 2
데이터 노드에 의해 생성 된 오류 로그입니다.
ndb_
는 참조 된 ndbd 프로세스에서 발생하는 모든 사고의 기록이 포함되어있는 파일입니다. 이 파일의 각 레코드에는 간단한 오류 문자열 및이 충돌 추적 파일에 대한 참조가 포함되어 있습니다. 이 파일의 일반적인 항목을 보여줍니다.node_id
_error.logDate/Time: Saturday 30 July 2004 - 00:20:01 Type of error: error Message: Internal program error (failed ndbrequire) Fault ID: 2341 Problem data: DbtupFixAlloc.cpp Object of reference: DBTUP (Line: 173) ProgramName: NDB Kernel ProcessID: 14909 TraceFile: ndb_2_trace.log.2 ***EOM***
데이터 노드 프로세스가 예기치 않게 종료 된 경우에 발생 될 수있는 ndbd 종료 코드 및 메시지 목록은
ndbd
Error Messages 에 있습니다.중요이 오류 로그 파일의 마지막 항목이 최신 항목하다고는 않습니다 (그 가능성도 거의 없습니다). 이 오류 로그 항목은 시간순으로 나열되지 않고
ndb_
파일 (다음을 참조하십시오)에서 결정되는 추적 파일의 순서에 대응하고 있습니다. 오류 로그 항목은 이러한 순환으로 덮어 순차적으로하지 않습니다.node_id
_trace.log.nextndb_
는 오류가 발생하기 직전에 발생한 사건을 나타내는 추적 파일입니다. 이 정보는 MySQL Cluster 개발 팀이 분석하는 데 유용합니다.node_id
_trace.log.trace_id
이전 파일을 덮어 쓰기 전에 생성 된 이러한 추적 파일의 수는 구성 할 수 있습니다.
trace_id
는 각각의 연속 된 추적 파일에서 증가되는 숫자입니다.ndb_
는 할당 된 다음 추적 파일 번호를 추적하는 파일입니다.node_id
_trace.log.nextndb_
은 ndbd 프로세스에 의한 데이터 출력이 포함되어있는 파일입니다. 이 파일은 ndbd가 데몬으로 시작되었다 (기본 동작) 경우에만 작성됩니다.node_id
_out.logndb_
는 ndbd 프로세스가 데몬으로 시작되면 프로세스 ID가 포함되어 있습니다. 이것은 동일한 식별자를 가진 노드가 시작되는 것을 막기 위해 잠금 파일로도 작동합니다.node_id
.pidndb_
는 ndbd의 디버그 버전에서만 사용되는 파일이며, ndbd 프로세스 그 데이터의 모든 인바운드, 아웃 바운드 및 내부 메시지를 추적 할 수 있습니다.node_id
_signal.log
NFS를 사용하여 마운트 된 디렉토리는 사용하지 않는 것이 좋습니다. 일부 환경에서는 프로세스가 종료 된 후에도 .pid
파일의 잠금이 활성화 된 상태가되는 문제가 발생할 수 있기 때문입니다.
ndbd를 시작하면 관리 서버의 호스트 이름과 그것이 대기하는 포트를 지정해야 할 수 있습니다. 필요에 따라 프로세스가 사용하는 노드 ID를 지정할 수도 있습니다.
shell> ndbd --connect-string="nodeid=2;host=ndb_mgmd.mysql.com:1186"
이에 대한 자세한 내용은 섹션 18.3.2.3 "MySQL Cluster의 연결 문자열" 을 참조하십시오. 섹션 18.4.27 "MySQL Cluster 프로그램에 공통 옵션 - MySQL Cluster 프로그램에 공통 옵션" 에서는 ndbd에서 사용할 수있는 다른 명령 행 옵션에 대해 설명합니다. 데이터 노드 구성 매개 변수는 섹션 18.3.2.6 "MySQL Cluster 데이터 노드의 정의" 를 참조하십시오.
ndbd가 시작되면 실제로 두 개의 프로세스가 시작됩니다. 첫번째 프로세스는 "엔젤 프로세스"라고 그 유일한 역할은 실행 프로세스가 완료 될 때 그것을 감지하고 ndbd 프로세스를 다시 시작하는 것입니다 (그렇게 구성된 경우). 따라서 UNIX의 kill 명령을 사용하여 ndbd를 종료하려고 할 경우, 두 프로세스를 강제 종료해야합니다 (엔젤 프로세스 우선). ndbd 프로세스를 종료시키기 위해 권장되는 방법은 관리 클라이언트를 사용하여 거기에서 프로세스를 중지하는 것입니다.
실행 프로세스는 데이터의 읽기, 쓰기, 검사 및 다른 모든 활동에 하나의 스레드를 사용합니다. 수천의 동시 작업을 쉽게 처리 할 수 있도록이 스레드는 비동기 적으로 구현됩니다. 또한 모니터링 스레드 실행 스레드가 무한 루프로 중단되지 않도록 관리합니다. 스레드 풀에 의해 파일 I / O 처리 된 각 스레드는 하나의 오픈 파일을 처리 할 수 있습니다. 스레드는 ndbd 프로세스의 전송에 의한 전송 연결하는 데 사용할 수 있습니다. 다수의 작업 (업데이트 포함)를 실행하는 멀티 프로세서 시스템의 경우 ndbd 프로세스는 최대 2 개의 CPU를 사용할 수 있습니다 (허용되는 경우).
다수의 CPU를 가진 시스템의 경우 다른 노드 그룹에 속하는 복수의 ndbd 프로세스를 사용할 수 있습니다. 그러나 이러한 구성은 아직 실험적인 것으로 간주되며 MySQL 5.6의 실전 배치에서 지원되지 않습니다. 섹션 18.1.6 "MySQL Cluster의 알려진 제한 사항" 을 참조하십시오.