18.5.5 MySQL Cluster의 롤링 재시작 실행
이 섹션에서는 MySQL Cluster 설치의 롤링 재시작을 수행하는 방법에 대해 설명합니다. 이렇게 불리는 이유는 클러스터 자체는 조작 가능한 상태로 유지되도록 각 노드를 차례로 중지 및 시작 (또는 다시 시작) 할 수 수반 때문입니다. 이것은 많은 경우에 롤링 업그레이드 또는 롤링 다운 그레이드의 일부로 실행됩니다. 여기에서는 클러스터의 고 가용성이 필수이며 클러스터 전체의 정지 시간은 허용되지 않습니다. 일반적으로 여기에서 제공하는 업그레이드에 대한 정보는 다운 그레이드에도 적용됩니다.
롤링 재시작 바람직 이유는 여러 가지가 있습니다. 다음 몇 단락에서 이들에 대해 설명합니다.
구성 변경 클러스터에 SQL 노드를 추가하거나 구성 매개 변수의 새 값에 대한 설정 등 클러스터 구성을 변경할 위하여.
MySQL Cluster 소프트웨어 업그레이드 또는 다운 그레이드 클러스터를 새로운 버전의 MySQL Cluster 소프트웨어 업그레이드 (또는 이전 버전으로 다운 그레이드)하기 위하여. 일반적으로 "롤링 업그레이드"(이전 버전의 MySQL Cluster에 돌아가려면 "롤링 다운 그레이드")라고합니다.
노드 호스트에서 변경 하나 이상의 MySQL Cluster 노드 프로세스가 실행되는 하드웨어 또는 운영 체제에서 변경 위하여.
시스템 재설정 (클러스터 초기화) 바람직하지 않은 상태에 이르렀 기 때문에 클러스터를 초기화하기 위하여. 이런 경우는 많은 경우에 하나 이상의 데이터 노드의 데이터 및 메타 데이터를 다시로드하는 것이 바람직하다고 생각됩니다. 이것은 다음의 3 가지 방법 중 하나를 실행할 수 있습니다.
--initial
옵션을 사용하여 각 데이터 노드 프로세스 (ndbd, 경우에 따라서는 ndbmtd)를 시작합니다. 그러면 강제로 데이터 노드의 파일 시스템이 삭제되고 다른 데이터 노드에서 MySQL Cluster 데이터 및 메타 데이터가 다시로드됩니다.다시 시작을 실행하기 전에 ndb_mgm 클라이언트의
BACKUP
명령을 사용하여 백업을 만듭니다. 업그레이드 후 ndb_restore를 사용하여 하나 이상의 노드를 복원합니다.자세한 내용은 섹션 18.5.3 "MySQL Cluster의 온라인 백업 ' 및 섹션 18.4.20 "ndb_restore - MySQL Cluster 백업 복원" 을 참조하십시오.
업그레이드 전에 mysqldump를 사용하여 백업을 만듭니다. 그 후,
LOAD DATA INFILE
을 사용하여 덤프를 복원합니다.
자원의 복구 다른 MySQL Cluster 테이블에서 재사용하기 위해 연속적인 INSERT
및 DELETE
조작에 의해 이전에 테이블에 할당 된 메모리를 해제하기 위하여.
롤링 재시작을 수행하는 과정은 다음과 같이 일반화 할 수 있습니다.
모든 클러스터 관리 노드 (ndb_mgmd 프로세스)를 중지하고 다시 구성하고 다시 시작합니다. ( 여러 관리 서버에서 롤링 다시 시작 을 참조하십시오.)
각 클러스터 데이터 노드 (ndbd 프로세스)를 차례로 중지하고 다시 구성하고 다시 시작합니다.
각 클러스터 SQL 노드 (mysqld 프로세스)를 차례로 중지하고 다시 구성하고 다시 시작합니다.
특정 롤링 업그레이드 구현의 세부 사항은 변경되는 내용에 따라 다릅니다. 그런 과정을 자세히 설명합니다.
위의 그림에서 중지 및 시작 단계는 쉘 명령 (대부분의 Unix 시스템에서 kill 등) 또는 관리 클라이언트 STOP
명령을 사용하여 프로세스를 완전히 정지 한 후 필요에 따라 ndbd 또는 ndb_mgmd 실행 파일을 호출하여 시스템 쉘에서 다시 시작할 필요가 있음을 보여줍니다. Windows에서 NET START
와 NET STOP
명령 또는 Windows Service Manager를 사용하여 Windows 서비스로 설치되는 노드를 시작하고 중지 할 수 있습니다 ( 섹션 18.2.3.4 "Windows 서비스로 MySQL Cluster 프로세스 설치 " 를 참조하십시오).
다시는 ndb_mgm 관리 클라이언트 RESTART
명령을 사용하여 프로세스를 다시 시작할 수 있는지 보여줍니다 ( 섹션 18.5.2 "MySQL Cluster 관리 클라이언트 명령" 을 참조하십시오).
MySQL Cluster는 노드를 업그레이드 할 때 유연한 순서를 지원합니다. MySQL Cluster를 업그레이드하는 경우, 관리 노드, 데이터 노드 또는 둘 모두를 업그레이드하기 전에 API 노드 (SQL 노드 포함)를 업그레이드 할 수 있습니다. 즉, API 노드와 SQL 노드를 임의의 순서로 업그레이드 할 수 있도록되어 있습니다. 여기에는 다음과 같은 조건이 적용됩니다.
이 기능은 온라인 업그레이드의 일부로 사용하는 것만을 목적으로하고 있습니다. 다양한 MySQL Cluster 릴리스 노드 바이너리를 혼합하여 프로덕션 환경 설정에서 지속적으로 장기간 사용하는 것이 예정된 않고 지원도되지 않습니다.
데이터 노드를 업그레이드하기 전에 모든 관리 노드를 업그레이드해야합니다. 이것은 클러스터 API 노드와 SQL 노드를 업그레이드하는 순서에 관계없이 적용됩니다.
모든 관리 노드 및 데이터 노드가 업그레이드 될 때까지 "새로운"버전 고유의 기능은 사용하지 마십시오.
이는 NDB 엔진 버전의 변경뿐만 아니라, 적용 할 수있는 모든 MySQL 서버 버전의 변경에도 적용됩니다. 따라서 업그레이드를 계획 할 때이를 고려하는 것을 잊지 마십시오. (일반적으로 이것은 MySQL Cluster의 온라인 업그레이드에 적용됩니다.)
Bug # 48528 및 Bug # 49163를 참조하십시오.
여러 관리 서버에서 롤링 다시 시작 여러 관리 노드를 가진 MySQL Cluster의 롤링 재시작을 실행하면 ndb_mgmd에 따라 다른 관리 노드가 실행되고 있는지 여부를 확인하고 실행되는 경우, 해당 노드의 구성 데이터의 사용이 시도된다 유의하십시오. 이것이 발생하는 것을 방지하고 ndb_mgmd 해당 구성 파일을 강제로 다시 읽기 시키려면 다음 단계를 수행합니다.
MySQL Cluster의 모든 ndb_mgmd 프로세스를 중지합니다.
모든
config.ini
파일을 업데이트합니다.필요에 따라
--reload
,--initial
또는 둘 다의 옵션을 사용하여 단일 ndb_mgmd를 시작합니다.첫 번째 ndb_mgmd를
--initial
옵션으로 시작하면 나머지 ndb_mgmd 프로세스도 모두--initial
을 사용하여 시작해야합니다.첫 번째 ndb_mgmd를 시작할 때 사용 된 기타 옵션에 관계없이 첫 번째 ndb_mgmd 프로세스를 완료 한 후
--reload
를 사용하여 나머지 프로세스를 다시 시작하지 않도록하십시오.정상적으로 데이터 노드 및 API 노드의 롤링 재시작을 완료합니다.
롤링 재시작을 실행하여 클러스터 구성을 업데이트 할 때 ndbinfo.nodes
테이블 config_generation
컬럼을 사용하여 새로운 구성으로 성공적으로 시작 된 데이터 노드를 추적 할 수 있습니다. 섹션 18.5.10.18 "ndbinfo nodes 테이블" 을 참조하십시오.