21.5.9 NDB 群集的 MySQL 服务器使用率

mysqld是传统的 MySQL 服务器进程。要与 NDB 群集一起使用,必须在支持NDB存储引擎的情况下构建mysqld,因为它在https://dev.mysql.com/downloads/可用的预编译二进制文件中。如果从源代码构建 MySQL,则必须使用-DWITH_NDBCLUSTER=1选项调用 CMake ,以包括对NDB的支持。

有关从源代码编译 NDB 群集的更多信息,请参见第 21.2.3.4 节“在 Linux 上从源代码构建 NDB 集群”第 21.2.4.2 节“在 Windows 上从源代码编译和安装 NDB 群集”

(有关本章讨论的与 NDB 群集相关的mysqld选项和变量的信息,请参阅第 21.3.3.9 节“ NDB 群集的 MySQL 服务器选项和变量”。)

如果mysqld二进制文件是通过群集支持构建的,则默认情况下仍禁用NDBCLUSTER存储引擎。您可以使用两个可能的选项之一来启用此引擎:

  • 启动mysqld时,在命令行上使用--ndbcluster作为启动选项。

  • my.cnf文件的[mysqld]部分中插入包含ndbcluster的行。

验证服务器是否在启用NDBCLUSTER存储引擎的情况下运行的一种简单方法是在 MySQL Monitor(mysql)中发出SHOW ENGINES语句。您应该在NDBCLUSTER的行中看到值YES作为Support值。如果在此行中看到NO,或者在输出中没有显示此行,则说明您不是在运行启用NDB的 MySQL 版本。如果在此行中看到DISABLED,则需要以上述两种方式之一启用它。

要读取集群配置数据,MySQL 服务器至少需要三项信息:

  • MySQL 服务器自己的集群节点 ID

  • Management 服务器(MGM 节点)的主机名或 IP 地址

  • 可以连接到 Management 服务器的 TCP/IP 端口号

节点 ID 可以动态分配,因此不必严格地明确指定它们。

mysqld参数ndb-connectstring用于在启动mysqld时或在my.cnf中在命令行上指定连接字符串。连接字符串包含可以在其中找到 Management 服务器的主机名或 IP 地址,以及它使用的 TCP/IP 端口。

在以下示例中,ndb_mgmd.mysql.com是 Management 服务器所在的主机,并且 Management 服务器在端口 1186 上侦听群集消息:

shell> mysqld --ndbcluster --ndb-connectstring=ndb_mgmd.mysql.com:1186

有关连接字符串的更多信息,请参见第 21.3.3.3 节“ NDB 群集连接字符串”

有了这些信息,MySQL 服务器将成为集群的正式参与者。 (我们通常将以这种方式运行的mysqld进程称为 SQL 节点。)它将完全了解所有群集数据节点及其状态,并将构建与所有数据节点的连接。在这种情况下,它能够使用任何数据节点作为事务协调器,并读取和更新节点数据。

您可以在mysqlClient 端中查看是否使用SHOW PROCESSLIST将 MySQL 服务器连接到集群。如果 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

Important

要参与 NDB 群集,必须使用* _2 *和--ndb-connectstring选项(或my.cnf中的等效选项)同时启动mysqld进程。如果仅使用--ndbcluster选项启动mysqld,或者如果它无法联系集群,则无法使用NDBtable,也无论存储引擎如何,都无法创建任何新 table。后一个限制是一种安全措施,旨在防止在 SQL 节点未连接到群集时创建与NDBtable 同名的 table。如果在mysqld进程未参与 NDB 群集时希望使用其他存储引擎创建 table,则必须**不带--ndbcluster选项而重新启动服务器。