Loading...
MySQL 9.5 Reference Manual 9.5의 A.10 MySQL 9.5 FAQ: NDB Cluster의 한국어 번역본입니다.
아래의 경우에 피드백에서 신고해주신다면 반영하겠습니다.
감사합니다 :)
다음 섹션에서는 MySQL NDB Cluster 및 NDB 스토리지 엔진에 대해 자주 묻는 질문에 답합니다.
A.10.1. 어떤 버전의 MySQL 소프트웨어가 NDB Cluster를 지원합니까? 소스에서 컴파일해야 합니까?
A.10.2. “NDB”와 “NDBCLUSTER”는 무엇을 의미합니까?
A.10.3. NDB Cluster를 사용하는 것과 MySQL Replication을 사용하는 것의 차이는 무엇입니까?
A.10.4. NDB Cluster를 실행하려면 특별한 네트워킹이 필요합니까? cluster 내 컴퓨터는 어떻게 통신합니까?
A.10.5. NDB Cluster를 실행하려면 몇 대의 컴퓨터가 필요하며, 그 이유는 무엇입니까?
A.10.6. NDB Cluster에서 각기 다른 컴퓨터는 무엇을 합니까?
A.10.7. NDB Cluster management client에서 SHOW 명령을 실행하면 다음과 같은 출력 줄이 보입니다:
A.10.8. 어떤 운영 체제에서 NDB Cluster를 사용할 수 있습니까?
A.10.9. NDB Cluster를 실행하기 위한 하드웨어 요구 사항은 무엇입니까?
A.10.10. NDB Cluster를 사용하려면 RAM이 얼마나 필요합니까? 디스크 메모리를 전혀 사용할 수 없습니까?
A.10.11. NDB Cluster에서 어떤 파일 시스템을 사용할 수 있습니까? 네트워크 파일 시스템이나 네트워크 공유는 어떻습니까?
A.10.12. VMWare, VirtualBox, Parallels, Xen과 같은 가상 머신 내부에서 NDB Cluster node를 실행할 수 있습니까?
A.10.13. NDB Cluster database를 채우려고 하는데, loading 과정이 조기에 끝나고 다음과 같은 에러 메시지가 나타납니다:
A.10.14. NDB Cluster는 TCP/IP를 사용합니다. 그렇다면 Internet을 통해, 하나 이상의 node를 원격 위치에 두고 실행할 수 있습니까?
A.10.15. NDB Cluster를 사용하려면 새로운 프로그래밍 또는 쿼리 언어를 배워야 합니까?
A.10.16. 어떤 프로그래밍 언어와 API가 NDB Cluster에서 지원됩니까?
A.10.17. NDB Cluster에는 management tool이 포함되어 있습니까?
A.10.18. NDB Cluster를 사용할 때 에러 또는 warning 메시지의 의미를 어떻게 알 수 있습니까?
A.10.19. NDB Cluster는 transaction-safe입니까? 어떤 isolation level이 지원됩니까?
A.10.20. NDB Cluster에서 어떤 스토리지 엔진이 지원됩니까?
A.10.21. 대규모 장애— 예를 들어 도시 전체에 전원이 나가고 UPS까지 고장 나는 경우—데이터를 모두 잃게 됩니까?
A.10.22. NDB Cluster에서 FULLTEXT index를 사용할 수 있습니까?
A.10.23. 단일 컴퓨터에서 여러 개의 node를 실행할 수 있습니까?
A.10.24. NDB Cluster를 재시작하지 않고 data node를 추가할 수 있습니까?
A.10.25. NDB Cluster를 사용할 때 알고 있어야 할 제한 사항이 있습니까?
A.10.26. NDB Cluster는 foreign key를 지원합니까?
A.10.27. 기존 MySQL database를 NDB Cluster로 어떻게 import합니까?
A.10.28. NDB Cluster node끼리는 어떻게 서로 통신합니까?
A.10.29. arbitrator란 무엇입니까?
A.10.30. 어떤 data type이 NDB Cluster에서 지원됩니까?
A.10.31. NDB Cluster를 어떻게 시작하고 중지합니까?
A.10.32. cluster가 종료되면 NDB Cluster data는 어떻게 됩니까?
A.10.33. NDB Cluster에 management node를 두 개 이상 두는 것이 좋은 아이디어입니까?
A.10.34. 하나의 NDB Cluster 안에 서로 다른 종류의 하드웨어와 운영 체제를 섞어서 사용할 수 있습니까?
A.10.35. 하나의 host에서 data node를 두 개 실행할 수 있습니까? SQL node를 두 개 실행할 수 있습니까?
A.10.36. NDB Cluster에서 host name을 사용할 수 있습니까?
A.10.37. NDB Cluster는 IPv6를 지원합니까?
A.10.38. 여러 MySQL server가 있는 NDB Cluster에서 MySQL user를 어떻게 처리합니까?
A.10.39. SQL node 중 하나가 실패했을 때 query를 계속 보내려면 어떻게 해야 합니까?
A.10.40. NDB Cluster를 어떻게 backup 및 restore합니까?
A.10.41. “angel process”란 무엇입니까?
| Property | Value |
|---|---|
| A.10.1. | 어떤 버전의 MySQL 소프트웨어가 NDB Cluster를 지원합니까? 소스에서<br>컴파일해야 합니까? |
NDB Cluster는 표준 MySQL Server 릴리스에서는 지원되지 않습니다.<br>대신 MySQL NDB Cluster는 별도의 제품으로 제공됩니다.<br>사용 가능한 NDB Cluster 릴리스 시리즈에는 다음이 포함됩니다:<br>- NDB Cluster 7.3 / NDB Cluster 7.4.<br>이 두 시리즈는 더 이상 새로운 디플로이먼트에 대해 유지 관리되거나<br>지원되지 않습니다. NDB Cluster 7.3 또는 7.4 사용자는 가능한 한<br>빨리 NDB 7.5 이상의 버전으로 업그레이드해야 합니다. 새로운<br>디플로이먼트에는 최신 NDB Cluster 8.0 릴리스 사용을 권장합니다.<br> <br> <br>- NDB Cluster 7.5.<br>이 시리즈는 이전 General Availability (GA) 버전의 NDB Cluster로,<br>여전히 프로덕션 용도로 사용 가능하지만, 새로운 디플로이먼트에서는<br>최신 NDB Cluster 8.0 릴리스 사용을 권장합니다. 최신 NDB Cluster 7.5<br>릴리스는 https://dev.mysql.com/downloads/cluster/에서 구할 수 있습니다.<br> <br> <br>- NDB Cluster 7.6.<br>이 시리즈는 이전 General Availability (GA) 버전의 NDB Cluster로,<br>여전히 프로덕션 용도로 사용 가능하지만, 새로운 디플로이먼트에서는<br>최신 NDB Cluster 8.0 릴리스 사용을 권장합니다. 최신 NDB Cluster 7.6<br>릴리스는 https://dev.mysql.com/downloads/cluster/에서 구할 수 있습니다.<br> <br> <br>- NDB Cluster 8.0.<br>이 시리즈는 가장 최근의 General Availability (GA) NDB Cluster<br>버전으로, 버전 8.0의 NDB 스토리지 엔진과 MySQL Server 8.0을<br>기반으로 합니다. NDB Cluster 8.0은 프로덕션 용도로 사용할 수<br>있습니다. 프로덕션 용도의 새로운 디플로이먼트에서는 현재 NDB<br>Cluster 8.0.44인 이 시리즈 내의 최신 GA 릴리스를 사용해야 합니다.<br>가장 최신의 NDB Cluster 8.0 릴리스는<br>https://dev.mysql.com/downloads/cluster/에서 구할 수 있습니다.<br>이 시리즈에서의 새로운 기능 및 기타 중요한 변경 사항에 대한 정보는<br>What is New in MySQL NDB Cluster 8.0을 참조하십시오.<br> <br>NDB Cluster는 소스를 받아 컴파일할 수 있습니다(참조:<br>Section 25.3.1.4, “Building NDB Cluster from Source on Linux”, 및<br>Section 25.3.2.2, “Compiling and Installing NDB Cluster from Source on Windows”),<br>그러나 대부분의 특수한 경우를 제외하고는, Oracle이 제공하는<br>다음 인스톨러 중에서 자신의 운영 플랫폼과 상황에 적합한 것을<br>사용하는 것을 권장합니다:<br>- Linux<br>binary 릴리스 (tar.gz 파일)<br> <br> <br>- Linux RPM 패키지<br> <br>- Linux<br>.deb 파일<br> <br>- Windows<br>binary “no-install” 릴리스<br> <br>- Windows MSI Installer<br> <br>설치 패키지는 플랫폼의 패키지 관리 시스템에서도 제공될 수<br>있습니다.<br> <br>MySQL Server가 NDB를 지원하는지 여부는 다음 중 하나의<br>문장으로 확인할 수 있습니다: SHOW VARIABLES LIKE 'have_%',<br>SHOW ENGINES, 또는<br>SHOW PLUGINS. | |
| A.10.2. | “NDB”와 “NDBCLUSTER”는 무엇을 의미합니까? |
“NDB”는 “Network Database”의 약자입니다.<br>NDB와 NDBCLUSTER는 둘 다 MySQL에서 클러스터링 지원을 가능하게<br>하는 스토리지 엔진의 이름입니다. NDB가 선호되지만, 두 이름 모두<br>올바릅니다. | |
| A.10.3. | NDB Cluster를 사용하는 것과 MySQL Replication을 사용하는<br>것의 차이는 무엇입니까? |
전통적인 MySQL replication에서는 source MySQL server가 하나 이상의<br>replica를 업데이트합니다. 트랜잭션은 순차적으로 커밋되며, 느린<br>트랜잭션은 replica가 source보다 뒤처지게 만들 수 있습니다. 이는<br>source가 실패할 경우 replica가 마지막 몇 개의 트랜잭션을 기록하지<br>못했을 수 있음을 의미합니다.<br>트랜잭션 세이프 엔진인<br>InnoDB가 사용되는 경우, 트랜잭션은 replica에서 완료되거나<br>전혀 적용되지 않지만, replication은 항상 source와 replica의 모든<br>데이터가 일관되게 유지된다는 것을 보장하지는 않습니다. NDB<br>Cluster에서는 모든 data node가 동기 상태로 유지되며, 어떤 data node에서든<br>커밋된 트랜잭션은 모든 data node에 대해 커밋됩니다. data node<br>장애가 발생해도, 남아 있는 모든 data node는 일관된 상태를<br>유지합니다.<br> <br>요약하면, 표준 MySQL replication은 비동기인 반면, NDB Cluster는<br>동기입니다.<br> <br>NDB Cluster에서도 비동기 replication을 사용할 수 있습니다. NDB<br>Cluster Replication(“geo-replication”이라고도 함)은 두 개의 NDB<br>Cluster 간, 그리고 NDB Cluster에서 non-Cluster MySQL server로의<br>replication 기능을 포함합니다.<br>Section 25.7, “NDB Cluster Replication”을 참조하십시오. | |
| A.10.4. | NDB Cluster를 실행하려면 특별한 네트워킹이 필요합니까? cluster는<br>내에서 컴퓨터는 어떻게 통신합니까? |
| NDB Cluster는 고대역폭 환경에서 사용하도록 설계되었으며,<br>컴퓨터는 TCP/IP를 사용하여 연결합니다. 그 성능은 cluster 내<br>컴퓨터 간 연결 속도에 직접적으로 좌우됩니다. NDB Cluster에 대한<br>최소 연결 요구 사항은 일반적인 100메가비트 Ethernet 네트워크 또는<br>동급의 네트워크입니다. 가능한 경우에는 기가비트 Ethernet 사용을<br>권장합니다. | |
| A.10.5. | NDB Cluster를 실행하려면 몇 대의 컴퓨터가 필요하며, 그 이유는 무엇입니까? |
| 유효한 cluster를 실행하려면 최소 세 대의 컴퓨터가 필요합니다.<br>그러나 NDB Cluster에서 권장되는 최소 컴퓨터 수는 네 대입니다.<br>management node와 SQL node 각각을 실행할 컴퓨터 한 대씩, 그리고<br>data node 역할을 할 컴퓨터 두 대입니다. 두 개의 data node의 목적은<br>중복성을 제공하는 것입니다. management node는 data node 중 하나가<br>실패하더라도 arbitration 서비스를 계속 제공하도록 별도의 머신에서<br>실행되어야 합니다.<br> <br>처리량과 고가용성을 높이기 위해, 여러 개의 SQL node(MySQL Server를<br>cluster에 연결한 것)를 사용해야 합니다. 또한 (엄밀히 필요하지는<br>않지만) 여러 개의 management server를 실행하는 것도 가능합니다. | |
| A.10.6. | NDB Cluster에서 각기 다른 컴퓨터는 무엇을 합니까? |
NDB Cluster는 물리적, 논리적 조직을 모두 가지며, 컴퓨터는<br>물리적 요소입니다. cluster의 논리적 또는 기능적 요소는 node라고<br>하며, cluster node를 포함하는 컴퓨터는 cluster host라고 부르기도<br>합니다. cluster 내에는 각각 cluster 내 특정 역할에 대응하는 세<br>가지 유형의 node가 있습니다. 이들은 다음과 같습니다:<br>- Management node.<br>이 node는 cluster 전체에 대한 management 서비스를 제공하며,<br>startup, shutdown, backup, 그리고 다른 node에 대한 구성 데이터를<br>포함합니다. management node server는<br>애플리케이션 ndb_mgmd로 구현되며, NDB<br>Cluster를 제어하는 데 사용되는 management client는<br>ndb_mgm입니다.<br>Section 25.5.4, “ndb_mgmd — The NDB Cluster Management Server Daemon” 및<br>Section 25.5.5, “ndb_mgm — The NDB Cluster Management Client”를 참조하여 이들 프로그램에 대한 정보를 확인하십시오.<br> <br> <br>- Data node.<br>이 유형의 node는 데이터를 저장하고 복제합니다. data node 기능은<br>NDB data node 프로세스인<br>ndbd의 인스턴스에 의해 처리됩니다. 자세한 내용은<br>Section 25.5.1, “ndbd — The NDB Cluster Data Node Daemon”을 참조하십시오.<br> <br> <br>- SQL node.<br>이는 단순히 MySQL Server(mysqld) 인스턴스로서,<br>NDBCLUSTER 스토리지 엔진 지원이 포함되어 빌드되고, 엔진을<br>활성화하기 위해 --ndb-cluster 옵션으로 시작되며, NDB Cluster<br>management server에 연결할 수 있도록 --ndb-connectstring 옵션으로<br>시작됩니다. 이러한 옵션에 대한 자세한 내용은<br>Section 25.4.3.9.1, “MySQL Server Options for NDB Cluster”를<br>참조하십시오.<br> <br> <br> <br> <br> <br>Note<br> <br> <br> <br> <br> <br>API node는 데이터 저장 및 검색을 위해 Cluster data node를 직접<br>사용하는 애플리케이션입니다. 따라서 SQL node는 MySQL Server를<br>사용하여 Cluster에 대한 SQL 인터페이스를 제공하는 일종의 API node로<br>간주할 수 있습니다. (MySQL Server에 의존하지 않는) 이러한<br>애플리케이션은 NDB Cluster 데이터에 대한 직접적이고 객체 지향적인<br>트랜잭션 및 스캔 인터페이스를 제공하는 NDB API를 사용하여 작성할<br>수 있습니다.<br>NDB Cluster API Overview: The NDB API를 참조하십시오. | |
| A.10.7. | NDB Cluster management client에서 SHOW 명령을 실행하면 다음과 같은<br>출력 줄이 보입니다:<br> <br>none<br>id=2 @10.100.10.32 (Version: 8.0.44-ndb-8.0.44 Nodegroup: 0, *)<br><br>여기서 *는 무엇을 의미합니까?<br>이 node는 다른 node와 어떻게 다릅니까? |
가장 단순한 답변은 다음과 같습니다. “이는 사용자가 제어할 수 있는<br>것이 아니며, NDB Cluster 소스 코드를 작성하거나 분석하는 소프트웨어<br>엔지니어가 아닌 한 신경 쓸 필요가 없습니다.”<br> <br>이 답변이 만족스럽지 않다면, 좀 더 길고 기술적인 버전은 다음과<br>같습니다:<br> <br>NDB Cluster에서는 여러 메커니즘이 data node 간 분산된 조정을<br>필요로 합니다. 이러한 분산 알고리즘과 프로토콜에는 global<br>checkpointing, DDL(schema) 변경, node 재시작 처리 등이 포함됩니다.<br>이러한 조정을 단순화하기 위해 data node는 자신들 중 하나를<br>leader로 “선출”합니다. 이 selection에 영향을 주는 사용자용<br>메커니즘은 없으며, 완전히 자동으로 수행됩니다. selection이 자동이라는<br>사실은 NDB Cluster 내부 아키텍처의 핵심 요소입니다.<br> <br>어떤 메커니즘에 대해 node가 “leader” 역할을 할 때, 일반적으로<br>해당 activity의 조정 지점이 되며, 다른 node는 “follower”로서,<br>leader의 지시에 따라 자신들의 activity 부분을 수행합니다.<br>leader로 동작하던 node가 실패하면, 남은 node가 새로운 leader를<br>선출합니다. 이전 leader가 조정하던 진행 중인 작업은 실패하거나,<br>사용된 실제 메커니즘에 따라 새로운 leader에 의해 계속될 수<br>있습니다.<br> <br>이러한 서로 다른 메커니즘과 프로토콜이 서로 다른 leader node를<br>갖는 것도 가능하지만, 일반적으로는 동일한 leader가 모두에 대해<br>선택됩니다. management client에서<br>SHOW 출력에 leader로 표시된 node는 내부적으로<br>DICT manager라고 하며, DDL 및 메타데이터 activity의 조정을<br>담당합니다.<br> <br>NDB Cluster는 leader 선택이 cluster 외부에는 눈에 띄는 영향을 주지<br>않도록 설계되었습니다. 예를 들어, 현재 leader가 다른 data node보다<br>눈에 띄게 높은 CPU 또는 리소스를 사용하는 것은 아니며, leader<br>failure가 다른 어떤 data node failure보다 cluster에 더 큰 영향을<br>주어서는 안 됩니다. | |
| A.10.8. | 어떤 운영 체제에서 NDB Cluster를 사용할 수 있습니까? |
| NDB Cluster는 대부분의 Unix 계열 운영 체제에서 지원됩니다.<br>NDB Cluster는 Microsoft Windows 운영 체제의 프로덕션 환경에서도<br>지원됩니다.<br> <br>다양한 운영 체제 버전, 운영 체제 배포판, 하드웨어 플랫폼에서 NDB<br>Cluster에 대해 제공되는 지원 수준에 대한 자세한 정보는<br>https://www.mysql.com/support/supportedplatforms/cluster.html을<br>참조하십시오. | |
| A.10.9. | NDB Cluster를 실행하기 위한 하드웨어 요구 사항은 무엇입니까? |
NDB Cluster는 NDB-enabled binary가 제공되는 모든 플랫폼에서<br>실행되어야 합니다. data node 및 API node의 경우, 더 빠른 CPU와 더 많은<br>메모리가 성능 향상에 도움이 되며, 64비트 CPU는 32비트 프로세서보다<br>효율적일 가능성이 큽니다. data node로 사용되는 머신에는 각 node의<br>database 몫을 저장할 수 있을 만큼 충분한 메모리가 있어야 합니다(자세한<br>내용은 _How much RAM do I Need?_를 참조하십시오). NDB Cluster<br>management server만 실행하는 컴퓨터의 경우 요구 사항은 최소 수준입니다.<br>일반적인 데스크톱 PC(또는 동급의 장비)로도 이 작업에 충분합니다.<br>node는 표준 TCP/IP 네트워크와 하드웨어를 통해 통신할 수 있습니다.<br>또한 고속 SCI 프로토콜을 사용할 수도 있습니다. 단, SCI를 사용하려면<br>특수한 네트워킹 하드웨어와 소프트웨어가 필요합니다(참조:<br>Section 25.4.4, “Using High-Speed Interconnects with NDB Cluster”). | |
| A.10.10. | NDB Cluster를 사용하려면 RAM이 얼마나 필요합니까? 디스크<br>메모리를 전혀 사용할 수 없습니까? |
NDB Cluster는 원래 인메모리 전용으로 구현되었지만, 현재 제공되는<br>모든 버전에서는 NDB Cluster를 디스크에 저장할 수 있는 기능도<br>제공합니다.<br>Section 25.6.11, “NDB Cluster Disk Data Tables”를 참조하십시오.<br> <br>인메모리 NDB 테이블의 경우, cluster 내 각 data node에 필요한 RAM의<br>대략적인 값을 구하기 위해 다음 공식을 사용할 수 있습니다:<br> <br>simple<br>(SizeofDatabase × NumberOfReplicas × 1.1 ) / NumberOfDataNodes<br><br>메모리 요구 사항을 더 정확하게 계산하려면, cluster database 내 각<br>테이블에 대해 row당 필요한 저장 공간을 결정해야 합니다(자세한 내용은<br>Section 13.7, “Data Type Storage Requirements”를 참조) 그리고 이를 row 수와 곱해야 합니다.<br>또한 다음과 같이 column index를 모두 고려해야 합니다:<br>- NDBCLUSTER 테이블에 대해 생성된 각 primary key 또는 hash index는<br>record당 21−25 byte를 필요로 합니다. 이러한 index는<br>IndexMemory를 사용합니다.<br> <br> <br>- 각 ordered index는 record당 10 byte의 저장 공간을 필요로 하며,<br>DataMemory를 사용합니다.<br> <br> <br>- primary key 또는 unique index를 생성하면, 이 index가<br>USING HASH로 생성되지 않는 한 ordered index도 함께 생성됩니다.<br> <br> <br> <br> <br> - Cluster 테이블에서 primary key 또는 unique index는 일반적으로<br> record당 31USING HASH로 생성되면,<br> record당 21USING HASH를 사용하여 NDB<br>Cluster 테이블을 생성하면 일반적으로 테이블 업데이트가 더 빠르게<br>실행됩니다. 어떤 경우에는 primary 및 unique key 생성에 USING HASH를<br>사용하지 않고 생성된 테이블의 업데이트보다 20~30 퍼센트까지 빠를 수<br>있습니다. 이는 ordered index가 생성되지 않아 필요한 메모리가 줄어들고,<br>읽거나 업데이트해야 할 index 수가 적어져 필요한 CPU 사용량이 감소하기<br>때문입니다.<br>그러나 이로 인해 range scan을 사용할 수 있는 쿼리가 다른 방식으로<br>처리되어야 하므로, select가 느려질 수 있습니다.<br> <br>Cluster 메모리 요구 사항을 계산할 때, 최근 MySQL 9.5 릴리스에서<br>사용할 수 있는 ndb_size.pl 유틸리티가 유용할 수 있습니다.<br>이 Perl 스크립트는 현재(Cluster가 아닌) MySQL database에 연결하여,<br>해당 database가 NDBCLUSTER 스토리지 엔진을 사용할 경우 필요한<br>공간에 대한 report를 생성합니다. 자세한 내용은<br>Section 25.5.29, “ndb_size.pl — NDBCLUSTER Size Requirement Estimator”를<br>참조하십시오.<br> <br>모든 NDB Cluster 테이블에는 primary key가 필요하다는 점을 특히<br>명심해야 합니다.<br>NDB 스토리지 엔진은 primary key가 정의되지 않은 경우 자동으로<br>primary key를 생성하며, 이 primary key는 USING HASH 없이<br>생성됩니다.<br> <br>임의의 시점에 NDB Cluster 데이터 및 index 저장에 사용 중인 메모리의<br>양은 ndb_mgm 클라이언트에서<br>REPORT MEMORYUSAGE 명령을 사용하여 확인할 수 있습니다.<br>자세한 내용은<br>Section 25.6.1, “Commands in the NDB Cluster Management Client”를<br>참조하십시오. 또한 사용 가능한<br>DataMemory 또는 (NDB 7.6 이전의 경우)<br>IndexMemory의 80%가 사용 중일 때 cluster log에 warning이<br>기록되며, 사용량이 90%, 99%, 100%에 도달할 때도 다시 기록됩니다. | |
| A.10.11. | NDB Cluster에서 어떤 파일 시스템을 사용할 수 있습니까? 네트워크<br>파일 시스템이나 네트워크 공유는 어떻습니까? |
일반적으로, host 운영 체제에 네이티브인 파일 시스템은 NDB Cluster와<br>함께 잘 동작해야 합니다. 특정 파일 시스템이 NDB Cluster와 함께 특히<br>잘 동작하거나(또는 특히 잘 동작하지 않는다고) 발견한다면, 해당 결과를<br>NDB Cluster Forums에서 공유해 주시기 바랍니다.<br> <br>Windows의 경우, 표준 MySQL과 마찬가지로 NDB Cluster에 대해서도<br>NTFS 파일 시스템 사용을 권장합니다. 우리는 NDB Cluster를 FAT 또는<br>VFAT 파일 시스템에서 테스트하지 않았습니다. 따라서 MySQL 또는 NDB<br>Cluster에서 이들의 사용은 권장하지 않습니다.<br> <br>NDB Cluster는 shared-nothing 솔루션으로 구현되었습니다. 이러한 설계의<br>기본 아이디어는 단일 하드웨어 구성 요소의 failure가 여러 cluster node의<br>failure, 나아가 cluster 전체의 failure를 유발해서는 안 된다는 것입니다.<br>이러한 이유로, NDB Cluster에서는 네트워크 공유 또는 네트워크 파일<br>시스템의 사용이 지원되지 않습니다. 이것은 SAN과 같은<br>shared storage 디바이스에도 적용됩니다. | |
| A.10.12. | VMWare, VirtualBox, Parallels, Xen과 같은 가상 머신<br>내부에서 NDB Cluster node를 실행할 수 있습니까? |
| NDB Cluster는 가상 머신에서 사용을 지원합니다. 우리는 현재<br>Oracle VM을 사용하여 지원 및 테스트를 수행합니다.<br> <br>일부 NDB Cluster 사용자는 다른 virtualization 제품을 사용하여 NDB<br>Cluster를 성공적으로 디플로이먼트했습니다. 이러한 경우 Oracle은 NDB<br>Cluster에 대한 지원은 제공할 수 있지만, 가상 환경에 특정한 이슈는<br>해당 제품의 벤더에 문의해야 합니다. | |
| A.10.13. | NDB Cluster database를 채우려 하고 있습니다. loading<br>과정이 조기에 종료되고 다음과 같은 에러 메시지가 표시됩니다:<br> <br>ERROR 1114: The table 'my_cluster_table' is<br> full<br>왜 이런 일이 발생합니까? |
원인은 거의 확실하게 setup이 모든 테이블 데이터와 모든 index를<br>저장할 만큼 충분한 RAM을 제공하지 않기 때문입니다.<br>이는 NDB NDB 스토리지 엔진에 의해 요구되는 primary key를<br>포함하며, 테이블 정의에 primary key 정의가 포함되어 있지 않으면<br>자동으로 생성됩니다.<br> <br>또한 모든 data node는 동일한 양의 RAM을 가져야 한다는 점을 명심할<br>가치가 있습니다. cluster 내 어떤 data node도 개별 data node에 사용<br>가능한 최소 메모리보다 더 많은 메모리를 사용할 수 없기 때문입니다.<br>예를 들어, Cluster data node를 호스팅하는 컴퓨터가 네 대 있고, 이 중<br>세 대는 Cluster data 저장용으로 3GB의 RAM을 사용할 수 있지만 나머지<br>data node는 1GB RAM만 사용할 수 있다면, 각 data node는 최대 1GB만 NDB<br>Cluster 데이터 및 index에 할당할 수 있습니다.<br> <br>어떤 경우에는, MySQL client 애플리케이션에서 “Table is full” 에러를<br>받더라도,<br>ndb_mgm -e "ALL REPORT MEMORYUSAGE"를 실행하면<br>여전히 상당한 양의 free<br>DataMemory가 있는 것으로 표시될 수 있습니다.<br>이 경우, NDB가 NDB Cluster 테이블에 대해 추가 partition을<br>생성하도록 강제할 수 있으며, 이렇게 하면 hash index용으로 더 많은<br>메모리를 사용할 수 있습니다. 이를 위해서는<br>CREATE TABLE에서 MAX_ROWS 옵션을 사용합니다. 일반적으로,<br>MAX_ROWS를 테이블에 저장할 것으로 예상되는 row 수의 두 배로<br>설정하면 충분합니다.<br> <br>비슷한 이유로, 데이터 load가 매우 많은 node에서 data node 재시작 시<br>문제가 발생할 수 있습니다.<br>MinFreePct 파라미터는 기본적으로<br>DataMemory의 5%(NDB 7.6 이전에는<br>IndexMemory도 포함)를 재시작용으로 예약하여 이 문제를<br>완화하는 데 도움이 됩니다. 이 예약 메모리는<br>NDB 테이블 또는 데이터 저장에는 사용할 수 없습니다. | |
| A.10.14. | NDB Cluster는 TCP/IP를 사용합니다. 그렇다면 Internet을 통해,<br>하나 이상의 node를 원격 위치에서 실행할 수 있습니까? |
| 그러한 조건에서는 cluster가 안정적으로 동작할 가능성이 매우 낮습니다.<br>NDB Cluster는 100 Mbps 또는 기가비트 Ethernet과 같이 LAN 환경에서<br>보장되는 전용 고속 연결 조건에서 실행된다는 전제를 가지고 설계 및<br>구현되었습니다(가능하면 기가비트 Ethernet이 더 좋습니다). 우리는 이보다<br>느린 속도에서의 성능에 대해 테스트하지도, 보증하지도 않습니다.<br> <br>또한 NDB Cluster의 node 간 통신은 secure하지 않다는 점을 꼭 기억해야<br>합니다. 통신은 암호화되지 않으며, 그 밖의 어떠한 보호 메커니즘으로도<br>보호되지 않습니다. cluster에 대해 가장 안전한 구성은 firewall 뒤의<br>private 네트워크에서, 외부에서 Cluster 데이터 또는 management node에<br>직접 access할 수 없게 하는 것입니다(SQL node에 대해서는 다른 MySQL<br>server 인스턴스와 마찬가지로 동일한 보안 조치를 취해야 합니다). 자세한<br>내용은<br>Section 25.6.19, “NDB Cluster Security”를 참조하십시오. | |
| A.10.15. | NDB Cluster를 사용하려면 새로운 프로그래밍 또는 쿼리 언어를<br>배워야 합니까? |
| 아니요. cluster 자체를 관리 및 구성하는 데 일부 특수 명령이<br>사용되기는 하지만, 다음과 같은 작업에는 표준 (My)SQL 문장만 필요합니다:<br>- 테이블 생성, 변경, 삭제<br> <br> <br>- 테이블 데이터 insert, update, delete<br> <br> <br>- primary 및 unique index 생성, 변경, 삭제<br> <br>NDB Cluster를 설정하려면 일부 특수 구성 파라미터와 파일이 필요합니다.<br>이에 대한 정보는<br>Section 25.4.3, “NDB Cluster Configuration Files”를<br>참조하십시오.<br> <br>NDB Cluster management client(ndb_mgm)에서는 cluster node 시작 및<br>중지와 같은 작업을 위해 몇 가지 간단한 명령을 사용합니다.<br>Section 25.6.1, “Commands in the NDB Cluster Management Client”를<br>참조하십시오. | |
| A.10.16. | 어떤 프로그래밍 언어와 API가 NDB<br>Cluster에서 지원됩니까? |
NDB Cluster는 표준 MySQL Server와 동일한 프로그래밍 API와 언어를<br>지원하며, 여기에는 ODBC, .Net, MySQL C API, 그리고 PHP, Perl,<br>Python과 같은 인기 있는 스크립팅 언어용 여러 드라이버가 포함됩니다.<br>이러한 API를 사용하여 작성된 NDB Cluster 애플리케이션은 다른<br>MySQL 애플리케이션과 유사하게 동작합니다. 즉, MySQL Server(여기서는<br>NDB Cluster의 SQL node)에 SQL 문장을 전송하고, 데이터 row를 포함한<br>response를 받습니다. 이러한 API에 대한 자세한 내용은<br>Chapter 31, Connectors and APIs를 참조하십시오.<br> <br>NDB Cluster는 또한 MySQL Server를 거치지 않고 NDB Cluster 데이터에 대한<br>저수준 C++ 인터페이스를 제공하는 NDB API를 사용한 애플리케이션<br>프로그래밍도 지원합니다.<br>The NDB API를 참조하십시오. 또한 많은<br>NDBCLUSTER management 기능은 C 언어 MGM API를 통해 노출됩니다.<br>자세한 내용은 The MGM API를 참조하십시오.<br> <br>NDB Cluster는 또한 session과 트랜잭션을 사용하는 도메인 객체 모델의<br>데이터를 지원하는 ClusterJ를 통해 Java 애플리케이션 프로그래밍도<br>지원합니다.<br>Java and NDB Cluster를 참조하십시오.<br> <br>NDB Cluster 8.0에는 NDB Cluster를 데이터 저장소로 사용하는 Node.js용<br>NoSQL 애플리케이션 어댑터도 포함되어 있습니다.<br>MySQL NoSQL Connector for JavaScript를 참조하십시오. | |
| A.10.17. | NDB Cluster에는 management tool이 포함되어 있습니까? |
| NDB Cluster에는 기본 management 기능을 수행하기 위한 명령 줄<br>클라이언트가 포함됩니다.<br>Section 25.5.5, “ndb_mgm — The NDB Cluster Management Client” 및<br>Section 25.6.1, “Commands in the NDB Cluster Management Client”를<br>참조하십시오.<br> <br>NDB Cluster는 또한 별도의 제품인 MySQL Cluster Manager로도 지원되며,<br>이는 rolling restart 및 구성 변경과 같은 많은 NDB Cluster management<br>작업을 자동화할 수 있는 고급 명령 줄 인터페이스를 제공합니다.<br>MySQL Cluster Manager에 대한 자세한 정보는<br>MySQL Cluster Manager 9.5.0 User Manual을 참조하십시오. | |
| A.10.18. | NDB Cluster를 사용할 때 에러 또는 warning 메시지의 의미를<br>어떻게 알 수 있습니까? |
이를 수행하는 방법에는 두 가지가 있습니다:<br>- mysql 클라이언트 내에서, 에러 또는 warning 상태가<br> 통보된 직후에 SHOW ERRORS 또는 SHOW WARNINGS를 사용합니다.<br> <br> <br>- 시스템 shell 프롬프트에서<br> perror --ndb error_code를 사용합니다. | |
| A.10.19. | NDB Cluster는 transaction-safe입니까? 어떤 isolation level이<br>지원됩니까? |
예. NDB 스토리지 엔진으로 생성된 테이블에 대해서는<br>트랜잭션이 지원됩니다. 현재, NDB Cluster는<br>READ COMMITTED 트랜잭션 isolation level만<br>지원합니다. | |
| A.10.20. | NDB Cluster에서 어떤 스토리지 엔진이 지원됩니까? |
NDB Cluster에는 NDB 스토리지 엔진이 필요합니다. 즉,<br>NDB Cluster node 간에 테이블을 공유하려면 해당 테이블은<br>ENGINE=NDB(또는 동등한 옵션인 ENGINE=NDBCLUSTER)를 사용하여<br>생성되어야 합니다.<br> <br>NDB Cluster와 함께 사용되는 MySQL server에서는<br>InnoDB나<br>MyISAM과 같은 다른 스토리지 엔진을 사용하는 테이블도<br>생성할 수 있지만, 이러한 테이블은 NDB를 사용하지<br>않으므로 클러스터링에 참여하지 않습니다. 이러한 각 테이블은 생성된<br>개별 MySQL server 인스턴스에 엄격히 로컬입니다.<br> <br>NDB Cluster는 아키텍처, 요구 사항, 구현 측면에서<br>InnoDB 클러스터링과 상당히 다릅니다. 이름이 유사하더라도 두 시스템은<br>호환되지 않습니다. InnoDB 클러스터링에 대한 자세한 정보는<br>MySQL AdminAPI를<br>참조하십시오. 또한<br>Section 25.2.6, “MySQL Server Using InnoDB Compared with NDB Cluster”를 참조하여<br>NDB와 InnoDB 스토리지 엔진 간 차이에 대한 정보를 확인하십시오. | |
| A.10.21. | 대규모 장애— 예를 들어 도시 전체에 전원이 나가고,<br>UPS까지 고장 나는 경우—데이터를 모두 잃게 됩니까? |
| 커밋된 모든 트랜잭션은 log에 기록됩니다. 따라서 대규모 장애가<br>발생하더라도 일부 데이터가 손실될 수는 있지만, 손실은 상당히<br>제한적이어야 합니다. 트랜잭션당 operation 수를 최소화하면 데이터<br>손실을 더 줄일 수 있습니다(어느 경우든 트랜잭션당 많은 수의<br>operation을 수행하는 것은 좋은 방법이 아닙니다). | |
| A.10.22. | NDB Cluster에서 FULLTEXT index를 사용할 수 있습니까? |
FULLTEXT 인덱싱은 현재<br>InnoDB 및<br>MyISAM 스토리지 엔진에서만 지원됩니다.<br>자세한 내용은<br>Section 14.9, “Full-Text Search Functions”를 참조하십시오. | |
| A.10.23. | 단일 컴퓨터에서 여러 개의 node를 실행할 수 있습니까? |
| 이는 가능하지만 항상 바람직한 것은 아닙니다. cluster를 실행하는 주요<br>이유 중 하나는 중복성을 제공하는 것입니다. 이러한 중복성을 완전히<br>활용하려면 각 node를 별도의 머신에 배치해야 합니다. 여러 node를 단일<br>머신에 두고 해당 머신이 실패하면, 이러한 node를 모두 잃게 됩니다.<br>따라서 단일 머신에서 여러 data node를 실행하는 경우, 이 머신의<br>failure가 특정 node group에 속한 모든 data node의 손실을 유발하지<br>않도록 설정하는 것이 매우 중요합니다.<br> <br>NDB Cluster는 저비용(또는 무상) 운영 체제가 설치된 범용 하드웨어에서<br>실행할 수 있으므로, 중요 데이터 보호를 위해 머신을 한두 대 추가하는<br>비용은 충분히 가치가 있습니다. 또한 management node를 실행하는<br>cluster host에 대한 요구 사항은 최소 수준이라는 점을 기억할 가치가<br>있습니다. 300 MHz Pentium 또는 동급 CPU와 운영 체제용으로 충분한<br>RAM, 그리고 ndb_mgmd 및<br>ndb_mgm 프로세스용 약간의 오버헤드만 있으면 됩니다.<br> <br>여러 개의 CPU, 코어 또는 둘 다를 가진 단일 host에서 여러 cluster<br>data node를 실행하는 것은 허용됩니다. NDB Cluster 배포판에는 이러한<br>시스템에서 사용하도록 설계된 멀티스레드 data node binary도<br>포함됩니다. 자세한 내용은<br>Section 25.5.3, “ndbmtd — The NDB Cluster Data Node Daemon (Multi-Threaded)”를<br>참조하십시오.<br> <br>일부 경우에는 동일한 머신에서 data node와 SQL node를 동시에 실행하는<br>것도 가능합니다. 이러한 구성의 성능은 코어 및 CPU 수, data node 및<br>SQL node 프로세스에 사용할 수 있는 디스크 및 메모리 용량 등 여러<br>요인에 따라 달라지며, 이러한 구성을 계획할 때는 이러한 요인들을<br>고려해야 합니다. | |
| A.10.24. | NDB Cluster를 재시작하지 않고 data node를 추가할 수 있습니까? |
| NDB Cluster를 offline 상태로 두지 않고 실행 중인 NDB Cluster에 새로운<br>data node를 추가하는 것이 가능합니다. 자세한 내용은<br>Section 25.6.7, “Adding NDB Cluster Data Nodes Online”를<br>참조하십시오.<br> <br>그 밖의 NDB Cluster node 유형에 대해서는 rolling restart만<br>필요합니다(참조:<br>Section 25.6.5, “Performing a Rolling Restart of an NDB Cluster”). | |
| A.10.25. | NDB Cluster를 사용할 때 알고 있어야 할 제한 사항이 있습니까? |
MySQL NDB Cluster에서 NDB 테이블에 대한 제한 사항에는 다음이 포함됩니다:<br>- Temporary 테이블은 지원되지 않습니다.<br> ENGINE=NDB 또는 ENGINE=NDBCLUSTER를 사용하는<br> CREATE TEMPORARY TABLE 문장은 에러로 실패합니다.<br> <br> <br>- NDBCLUSTER 테이블에 대해 지원되는 user-defined partitioning 타입은<br> KEY 및 LINEAR KEY뿐입니다. 다른 partitioning 타입을 사용하여<br> NDB 테이블을 생성하려 하면 에러로 실패합니다.<br> <br> <br>- FULLTEXT index는 지원되지 않습니다.<br> <br> <br>- index prefix는 지원되지 않습니다. 전체 column만 index에 사용할 수<br> 있습니다.<br> <br> <br>- spatial index는 지원되지 않습니다(단, spatial column은 사용할 수<br> 있습니다). Section 13.4, “Spatial Data Types”를 참조하십시오.<br> <br> <br>- 부분 트랜잭션 및 부분 rollback에 대한 지원은, 개별 문장 rollback이<br> 가능한<br> InnoDB와 같은 다른 트랜잭션 스토리지 엔진의 지원 수준과<br> 비슷합니다.<br> <br> <br>- 테이블당 허용되는 attribute 최대 개수는 512개입니다. attribute<br> 이름 길이는 31자를 초과할 수 없습니다. 각 테이블에 대해 테이블<br> 이름과 database 이름의 결합 최대 길이는 122자입니다.<br> <br> <br>- NDB 8.0 이전에는 테이블 row의 최대 크기는 14 kilobyte이며,<br> 여기에는 BLOB 값은 포함되지 않습니다. NDB 8.0에서는 이 최대값이<br> 30000 byte로 증가합니다. 자세한 내용은<br> Section 25.2.7.5, “Limits Associated with Database Objects in NDB Cluster”를<br> 참조하십시오.<br> <br> <br> <br>NDB 테이블당 row 수에 대한 고정된 limit는 없습니다. 테이블 크기에<br>대한 limit는 특히 각 data node에 사용 가능한 RAM 용량 등 여러 요인에<br>따라 달라집니다.<br> <br>NDB Cluster의 제한 사항 전체 목록은<br>Section 25.2.7, “Known Limitations of NDB Cluster”를 참조하십시오. 또한<br>Previous NDB Cluster Issues Resolved in NDB Cluster 8.0을<br>참조하십시오. | |
| A.10.26. | NDB Cluster는 foreign key를 지원합니까? |
NDB Cluster는<br>InnoDB 스토리지 엔진에서 제공되는 수준에 상응하는<br>foreign key 제약 조건 지원을 제공합니다.<br>Section 1.7.3.2, “FOREIGN KEY Constraints”를<br>참조하십시오. 또한<br>Section 15.1.24.5, “FOREIGN KEY Constraints”도 참조하십시오.<br>foreign key 지원이 필요한 애플리케이션은 NDB Cluster 7.3, 7.4, 7.5<br>이상을 사용해야 합니다. | |
| A.10.27. | 기존 MySQL database를 NDB Cluster로 어떻게 import합니까? |
NDB Cluster로 database를 import하는 방법은 다른 버전의 MySQL과 크게<br>다르지 않습니다. 이 FAQ의 다른 부분에서 언급한 제한 사항을 제외하면,<br>cluster에 포함될 모든 테이블이 NDB 스토리지 엔진을 사용한다는<br>점만이 추가적인 요구 사항입니다. 즉, 테이블은 ENGINE=NDB 또는<br>ENGINE=NDBCLUSTER로 생성되어야 합니다.<br> <br>기존의 다른 스토리지 엔진을 사용하는 테이블을 하나 이상의<br>ALTER TABLE 문장을 사용하여<br>NDBCLUSTER로 변환하는 것도 가능합니다. 그러나 변환 전에<br>테이블 정의는 NDBCLUSTER 스토리지 엔진과 호환되어야<br>합니다. MySQL 9.5에서는 추가적인 workaround도 필요합니다.<br>Section 25.2.7, “Known Limitations of NDB Cluster”를<br>참조하십시오. | |
| A.10.28. | NDB Cluster node끼리는 어떻게 서로 통신합니까? |
| Cluster node는 TCP/IP, SHM(shared memory), SCI(Scalable Coherent<br>Interface)의 세 가지 서로 다른 transport 메커니즘을 통해 통신할 수<br>있습니다. 사용 가능한 경우, 동일한 cluster host에 있는 node 사이에는<br>기본적으로 SHM이 사용되지만, 이는 실험적인 것으로 간주됩니다.<br>SCI는 1 gigabit per second 이상 속도를 제공하며, 고가용성을 위한<br>프로토콜로, scalable multiprocessor 시스템 구축에 사용됩니다. 이를<br>사용하려면 특수한 하드웨어 및 드라이버가 필요합니다.<br>Section 25.4.4, “Using High-Speed Interconnects with NDB Cluster”를 참조하여 NDB Cluster의 transport 메커니즘으로 SCI를 사용하는<br>방법에 대한 자세한 정보를 확인하십시오. | |
| A.10.29. | arbitrator란 무엇입니까? |
cluster에서 하나 이상의 data node가 실패하면, cluster 내의 모든<br>data node가 서로를 “볼 수” 없는 상황이 발생할 수 있습니다. 실제로,<br>network partitioning(“split-brain” 시나리오라고도 함)에서 data node<br>집합 두 개가 서로 고립될 수 있습니다. 이와 같은 상황은 각 data node<br>집합이 자신이 전체 cluster인 것처럼 동작하려 하기 때문에 바람직하지<br>않습니다. 이러한 competing data node 집합 간에서 결정을 내리기 위해<br>arbitrator가 필요합니다.<br> <br>최소한 하나의 node group에서 모든 data node가 살아 있는 경우에는,<br>network partitioning이 문제가 되지 않습니다. 어떤 subset도 단독으로<br>동작 가능한 cluster를 형성할 수 없기 때문입니다. 실제 문제는 어느<br>단일 node group도 모든 node가 살아 있지 않은 경우에 발생하며, 이 경우<br>network partitioning(“split-brain” 시나리오)이 발생할 수 있습니다.<br>이때 arbitrator가 필요합니다. 모든 cluster node는 동일한 node를<br>arbitrator로 인식하며, 기본적으로는 management server가 이 역할을<br>맡습니다. 그러나 cluster 내 MySQL Server 중 아무 것이나 대신<br>arbitrator 역할을 하도록 구성할 수도 있습니다. arbitrator는 먼저<br>자신에게 contact한 data node 집합을 받아들이고, 나머지 집합에 대해<br>shutdown을 지시합니다. arbitrator 선택은 MySQL Server와 management<br>server node의 ArbitrationRank 구성 파라미터에 의해 제어됩니다.<br>이러한 파라미터를 사용하여 arbitrator 선택 과정을 제어할 수도<br>있습니다. 이 파라미터에 대한 자세한 정보는<br>Section 25.4.3.5, “Defining an NDB Cluster Management Server”를<br>참조하십시오.<br> <br>arbitrator 역할 자체는 지정된 host에 큰 부하를 가하지 않으므로,<br>arbitrator host가 특별히 빠르거나 이 목적을 위해 추가 메모리를 가질<br>필요는 없습니다. | |
| A.10.30. | 어떤 data type이 NDB Cluster에서 지원됩니까? |
NDB Cluster는 MySQL의 spatial extension과 관련된 data type을 포함하여<br>일반적인 MySQL data type을 모두 지원합니다. 그러나<br>NDB 스토리지 엔진은 spatial index를 지원하지 않습니다.<br>(spatial index는<br>MyISAM에서만 지원됩니다.<br>Section 13.4, “Spatial Data Types”를 참조하십시오.) 또한,<br>NDB 테이블과 함께 사용할 때 index와 관련하여 몇 가지 차이가 있습니다.<br>Note<br>NDB Cluster Disk Data 테이블(즉,<br>TABLESPACE ... STORAGE DISK ENGINE=NDB 또는 TABLESPACE ... STORAGE DISK ENGINE=NDBCLUSTER로 생성된 테이블)은<br>fixed-width row만 가집니다. 이는 (예를 들어)<br>VARCHAR(255) column이 포함된 각 Disk Data 테이블 record가,<br>실제로 저장된 문자 수와 관계없이, (테이블에서 사용 중인 character set<br>및 collation에 따라) 255자에 필요한 공간을 차지한다는 것을<br>의미합니다.<br>Section 25.2.7, “Known Limitations of NDB Cluster”를 참조하여 이러한 issue에 대한 자세한 정보를 확인하십시오. | |
| A.10.31. | NDB Cluster를 어떻게 시작하고 중지합니까? |
cluster 내 각 node는 다음 순서에 따라 개별적으로 시작해야 합니다:<br>1. ndb_mgmd 명령을 사용하여 management node를 시작합니다.<br> <br> <br> <br> cluster를 처음 시작할 때는 management node에 구성 파일의 위치를<br> 알려주기 위해<br> -f 또는<br> --config-file 옵션을 포함해야 합니다.<br> <br> <br>2. ndbd 명령을 사용하여 각 data node를 시작합니다.<br> <br> <br> <br> 각 data node는 management server에 연결하는 방법을 알 수 있도록,<br> -c 또는<br> --ndb-connectstring 옵션과 함께 시작해야 합니다.<br> <br> <br>3. mysqld_safe와 같은 선호하는 startup 스크립트를 사용하여 각<br> MySQL Server(SQL node)를 시작합니다.<br> <br> <br> <br> 각 MySQL Server는<br> --ndbcluster 및<br> --ndb-connectstring 옵션과 함께 시작해야 합니다. 이러한 옵션은<br> mysqld에<br> NDBCLUSTER 스토리지 엔진 지원을 활성화하고, management server에<br> 연결하는 방법을 알려줍니다.<br> <br>이들 각 명령은 영향을 받는 node를 호스팅하는 머신의 시스템 shell에서<br>실행해야 합니다(실제 머신 앞에 있을 필요는 없으며, 원격 로그인 shell을<br>사용할 수도 있습니다). cluster가 실행 중인지 확인하려면, management<br>node를 호스팅하는 머신에서<br>ndb_mgm을 사용하여 NDB management 클라이언트를 실행한 다음,<br>SHOW 또는 ALL STATUS 명령을 실행하면 됩니다.<br> <br>실행 중인 cluster를 종료하려면, management 클라이언트에서<br>SHUTDOWN 명령을 실행합니다. 또는 시스템 shell에서 다음 명령을 입력할<br>수도 있습니다:<br> <br>terminal<br>$> ndb_mgm -e "SHUTDOWN"<br><br>(이 예제에서, 명령 문자열에 공백이 없으므로 -e 옵션 뒤의 명령<br>문자열에서 따옴표는 선택적입니다. 또한 SHUTDOWN 명령은 다른<br>management 클라이언트 명령과 마찬가지로 대소문자를 구분하지<br>않습니다.)<br> <br>위 두 명령 중 어느 것을 사용하더라도,<br>ndb_mgm,<br>ndb_mgm, 그리고 모든 ndbd 프로세스가 정상적으로<br>종료됩니다. SQL node로 실행 중인 MySQL server는<br>mysqladmin shutdown을 사용하여 중지할 수 있습니다.<br> <br>자세한 내용은<br>Section 25.6.1, “Commands in the NDB Cluster Management Client” 및<br>Section 25.3.6, “Safe Shutdown and Restart of NDB Cluster”를 참조하십시오.<br> <br>MySQL Cluster Manager는 NDB Cluster node의 시작 및 중지를 처리하는<br>추가 방법을 제공합니다.<br>MySQL Cluster Manager 9.5.0 User Manual을 참조하여 이 도구에 대한 자세한 정보를 확인하십시오. | |
| A.10.32. | cluster가 종료되면 NDB Cluster data는 어떻게 됩니까? |
| cluster data node의 메모리에 있던 데이터는 디스크에 기록되며,<br>cluster가 다음에 시작될 때 메모리로 다시 로드됩니다. | |
| A.10.33. | NDB Cluster에 management node를 두 개 이상 두는 것이<br>좋은 아이디어입니까? |
| fail-safe 측면에서 도움이 될 수 있습니다. 어느 시점에서든 cluster를<br>제어하는 management node는 하나뿐이지만, 하나를 primary로<br>구성하고, primary management node가 실패했을 때를 대비하여 하나<br>이상을 추가 management node로 구성할 수 있습니다.<br> <br>NDB Cluster management node를 구성하는 방법에 대해서는<br>Section 25.4.3, “NDB Cluster Configuration Files”를<br>참조하십시오. | |
| A.10.34. | 하나의 NDB Cluster 안에 서로 다른 종류의 하드웨어와<br>운영 체제를 섞어서 사용할 수 있습니까? |
| 예, 모든 머신과 운영 체제가 동일한 “endianness”(모두 big-endian 또는<br>모두 little-endian)인 경우 가능합니다.<br> <br>서로 다른 NDB Cluster 릴리스에서 나온 소프트웨어를 서로 다른 node에서<br>사용하는 것도 가능합니다. 그러나 우리는 이를 rolling upgrade 절차의<br>일부로 사용하는 경우에만 지원합니다(참조:<br>Section 25.6.5, “Performing a Rolling Restart of an NDB Cluster”). | |
| A.10.35. | 하나의 host에서 data node를 두 개 실행할 수 있습니까? SQL node를<br>두 개 실행할 수 있습니까? |
| 예, 가능합니다. 여러 data node의 경우, 각 node가 서로 다른 data<br>디렉터리를 사용하는 것이 바람직하지만 필수는 아닙니다. 하나의<br>머신에서 여러 SQL node를 실행하려면, 각<br>mysqld 인스턴스가 서로 다른 TCP/IP 포트를 사용해야 합니다.<br> <br>동일한 host에서 data node와 SQL node를 함께 실행할 수도 있지만,<br>ndbd 또는 ndbmtd 프로세스가<br>mysqld와 메모리를 두고 경쟁할 수 있다는 점을 인지해야 합니다. | |
| A.10.36. | NDB Cluster에서 host name을 사용할 수 있습니까? |
| 예, cluster host에 DNS와 DHCP를 사용할 수 있습니다. 그러나<br>애플리케이션이 “five nines” 가용성을 요구하는 경우에는 고정(숫자)<br>IP address를 사용하는 것이 좋습니다. Cluster host 간 통신이 DNS 및<br>DHCP와 같은 서비스에 의존하게 되면 잠재적인 추가 장애 지점이 생기기<br>때문입니다. | |
| A.10.37. | NDB Cluster는 IPv6를 지원합니까? |
| 모든 유형의 NDB Cluster node는 IPv6를 지원합니다. 여기에는 management<br>node, data node, API 또는 SQL node가 포함됩니다. | |
| A.10.38. | 여러 MySQL server가 있는 NDB Cluster에서 MySQL user를<br>어떻게 처리합니까? |
일반적으로, 동일한 NDB Cluster에 access하는 서로 다른 MySQL server 간에는<br>MySQL user account와 privilege가 자동으로 전파되지 않습니다. MySQL NDB<br>Cluster는<br>NDB_STORED_USER privilege를 사용하여 shared 및 synchronized user와<br>privilege를 지원합니다.<br>Distributed Privileges Using Shared Grant Tables를<br>참조하십시오. 이 구현은 NDB 8.0에서 도입되었으며, 이전 버전의 NDB<br>Cluster에서 사용되던 shared privilege 메커니즘과는 호환되지 않는다는<br>점을 유의해야 합니다. 이전 구현은 NDB 8.0에서 더 이상 지원되지<br>않습니다. | |
| A.10.39. | SQL node 중 하나가 실패했을 때 query를 계속 보내려면<br>어떻게 해야 합니까? |
| MySQL NDB Cluster는 SQL node 간의 자동 failover 기능을 제공하지<br>않습니다. 애플리케이션은 SQL node 손실을 처리하고 node 간 failover를<br>수행할 수 있도록 준비되어 있어야 합니다. | |
| A.10.40. | NDB Cluster를 어떻게 backup 및 restore합니까? |
| NDB management 클라이언트와<br>ndb_restore 프로그램에서 제공되는 NDB Cluster 고유의 backup 및 restore 기능을<br>사용할 수 있습니다.<br>Section 25.6.8, “Online Backup of NDB Cluster” 및<br>Section 25.5.23, “ndb_restore — Restore an NDB Cluster Backup”을<br>참조하십시오.<br> <br>mysqldump 및 MySQL server에서 제공하는 기존 기능을 사용할 수도<br>있습니다.<br>Section 6.5.4, “mysqldump — A Database Backup Program”을 참조하십시오. | |
| A.10.41. | “angel process”란 무엇입니까? |
| 이 프로세스는 data node 프로세스를 모니터링하고, 필요할 경우 이를<br>재시작하려고 시도합니다. 시스템에서<br>ndbd를 시작한 후 active 프로세스 목록을 확인하면, 다음과 같이 해당<br>이름으로 실제로 두 개의 프로세스가 실행 중인 것을 볼 수 있습니다<br>(ndb_mgmd 및<br>ndbd의 출력은 간단히 하기 위해 생략합니다):<br> <br>```terminal<br>$> ./ndb_mgmd<br>$> ps aux |
A.9 MySQL 9.5 FAQ: Security
A.11 MySQL 9.5 FAQ: MySQL Chinese, Japanese, and Korean Character Sets