Documentation Home
MySQL 8.0 参考手册  / 第 23 章 MySQL NDB Cluster 8.0  / 23.6 NDB Cluster的管理  /  21.6.10 NDB Cluster 的 MySQL 服务器使用

21.6.10 NDB Cluster 的 MySQL 服务器使用

mysqld是传统的 MySQL 服务器进程。要与 NDB Cluster 一起使用, mysqld需要构建为支持NDB 存储引擎,因为它位于https://mysql.net.cn/downloads/。如果您从源代码构建 MySQL,则必须调用CMake-DWITH_NDBCLUSTER=1选择包含对NDB.

有关从源代码编译 NDB Cluster 的更多信息,请参阅 第 21.3.1.4 节,“在 Linux 上从源代码构建 NDB Cluster”第 21.3.2.2 节,“在 Windows 上从源代码编译和安装 NDB Cluster”

(有关mysqld选项和变量的信息,除了本节中讨论的那些与 NDB Cluster 相关的信息,请参阅 第 21.4.3.9 节,“NDB Cluster 的 MySQL 服务器选项和变量”。)

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

  • --ndbcluster启动 mysqld时用作命令行上的启动选项。

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

验证您的服务器是否在启用存储引擎的情况下运行的一种简单方法是 在 MySQL 监视器 ( mysql )NDBCLUSTER中发出SHOW ENGINES语句。您应该将值视为 行中的值。如果您看到这一行,或者如果输出中没有显示这样的行,则您没有运行 启用 -enabled 的 MySQL 版本。如果您看到这一行,则需要以刚刚描述的两种方式之一启用它。 YESSupportNDBCLUSTERNONDBDISABLED

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

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

  • 管理服务器的主机名或 IP 地址

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

节点 ID 可以动态分配,因此没有必要明确指定它们。

mysqld参数 ndb-connectstring用于在启动 mysqld或在my.cnf. 连接字符串包含可以找到管理服务器的主机名或 IP 地址,以及它使用的 TCP/IP 端口。

下面的例子中,ndb_mgmd.mysql.com是管理服务器所在的主机,管理服务器在1186端口监听集群消息:

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

有关连接字符串的更多信息,请参阅第 21.4.3.3 节,“NDB Cluster 连接字符串”

有了这些信息,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 Cluster,mysqld 进程必须同时使用选项--ndbcluster--ndb-connectstring(或它们在 中的等效项my.cnf)启动。如果 mysqld仅以该 --ndbcluster选项启动,或者无法联系集群,则无法使用 NDB表,也无法创建任何新表,而不管存储引擎如何。后一个限制是一种安全措施,旨在防止创建与以下名称相同的表NDB表,而 SQL 节点未连接到集群。如果您希望在mysqld 进程未参与 NDB Cluster 时使用不同的存储引擎创建表,则必须在没有--ndbcluster选项的情况下重新启动服务器。