NDB群集的MySQL服务器使用情况
mysqld是传统的MySQL服务器进程。要与NDB群集一起使用,必须在支持存储引擎的情况下构建 mysqldNDB
,因为它位于https://dev.mysql.com/downloads/中提供的预编译二进制文件中。如果从源代码构建MySQL,则必须调用 CMake并-DWITH_NDBCLUSTER=1
选择包含对的支持NDB
。
有关从源代码编译NDB群集的更多信息,请参见“在Linux上从源代码编译NDB群集”和“在Windows上从源代码编译和安装NDB群集”。
(有关本章讨论的与NDB群集相关的mysqld选项和变量的信息,请参阅“ NDB群集的MySQL服务器选项和变量”。)
如果mysqld二进制文件是通过群集支持构建的,则NDBCLUSTER
默认情况下仍禁用存储引擎。您可以使用两个可能的选项之一来启用此引擎:
- 使用
--ndbcluster
开始时作为命令行启动选项的mysqld。 ndbcluster
在文件的[mysqld]
部分插入一行my.cnf
。
验证服务器是否在NDBCLUSTER
启用存储引擎的情况下运行的一种简单方法是SHOW ENGINES
在MySQL Monitor(mysql)中发出该语句。您应该将值YES
视为Support
的行中的值NDBCLUSTER
。如果您NO
在此行中看到或在输出中没有显示该行,则说明您没有运行NDB
启用了MySQL的版本。如果您DISABLED
在此行中看到,则需要以上述两种方式之一启用它。
要读取集群配置数据,MySQL服务器至少需要三项信息:
- MySQL服务器自己的集群节点ID
- 管理服务器(MGM节点)的主机名或IP地址
- 可以连接到管理服务器的TCP / IP端口号
节点ID可以动态分配,因此不一定要明确指定它们。
所述mysqld的参数ndb-connectstring
被用来启动时要么指定命令行上的连接字符串的mysqld或my.cnf
。连接字符串包含可以在其中找到管理服务器的主机名或IP地址,以及它使用的TCP / IP端口。
在以下示例中,ndb_mgmd.mysql.com
是管理服务器所在的主机,管理服务器在端口1186上侦听群集消息:
shell>mysqld --ndbcluster --ndb-connectstring=ndb_mgmd.mysql.com:1186
有关连接字符串的更多信息,请参见“ NDB群集连接字符串”。
有了这些信息,MySQL服务器将完全参与集群。(我们通常将以此方式运行的mysqld进程称为SQL节点。)它将完全了解所有群集数据节点及其状态,并将建立与所有数据节点的连接。在这种情况下,它可以使用任何数据节点作为事务协调器,并读取和更新节点数据。
您可以在mysql客户端中参见是否使用来将MySQL服务器连接到群集SHOW PROCESSLIST
。如果MySQL服务器已连接到集群,并且您具有PROCESS
特权,则输出的第一行如下所示:
mysql>重要SHOW PROCESSLIST \G *************************** 1. row*************************** Id: 1 User: system user Host: db: Command: Daemon Time: 1 State: Waiting for event from ndbcluster Info: NULL
要参与NDB群集,必须同时使用选项和(或中的等效项)启动mysqld进程。如果仅使用该选项启动mysqld,或者如果它无法联系集群,则无法使用表,也不管存储引擎如何都不能创建任何新表。后一种限制是一种安全措施,旨在防止创建与以下名称相同的表--ndbcluster
--ndb-connectstring
my.cnf
--ndbcluster
NDB
NDB
SQL节点未连接到群集时使用表。如果您希望在mysqld进程未参与NDB群集时使用其他存储引擎创建表,则必须在没有该--ndbcluster
选项的情况下重新启动服务器。