Documentation Home
MySQL 8.3 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 40.8Mb
PDF (A4) - 40.9Mb
Man Pages (TGZ) - 294.0Kb
Man Pages (Zip) - 409.0Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb
Excerpts from this Manual

MySQL 8.3 Reference Manual  /  ...  /  MySQL Server Usage for NDB Cluster

25.6.10 MySQL 服务器用于 NDB 集群

mysqld 是传统的 MySQL 服务器进程。要与 NDB 集群一起使用,mysqld 需要使用支持 NDB 存储引擎构建,如在从 https://dev.mysql.com/downloads/ 获取的预编译二进制文件中那样。如果从源代码构建 MySQL,您必须使用 CMake 选项 -DWITH_NDB=1 或(已弃用)-DWITH_NDBCLUSTER=1 选项来包括对 NDB 的支持。

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

(有关 mysqld 选项和变量的信息,以及在本节中讨论的 NDB 集群相关选项和变量,请参阅 第 25.4.3.9 节,“MySQL 服务器选项和变量用于 NDB 集群”。)

如果 mysqld 二进制文件已经使用 Cluster 支持构建,则 NDBCLUSTER 存储引擎仍然默认禁用。您可以使用以下两种可能的选项之一来启用该引擎:

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

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

验证服务器是否正在使用 NDBCLUSTER 存储引擎的简单方法是发出 SHOW ENGINES 语句在 MySQL 监控器 (mysql) 中。您应该在 NDBCLUSTER 行中看到 YES 作为 Support 值。如果您在该行中看到 NO 或者没有显示该行输出,那么您没有运行 NDB-enabled 版本的 MySQL。如果您在该行中看到 DISABLED,那么您需要使用上述两种方法之一启用它。

要读取集群配置数据,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

查看 第 25.4.3.3 节,“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
Important

要参与 NDB 集群,mysqld 进程必须使用 两个 选项 --ndbcluster--ndb-connectstring(或其在 my.cnf 中的等效项)。如果 mysqld 只使用 --ndbcluster 选项,或者无法联系集群,那么无法使用 NDB 表,也无法创建任何新表,无论存储引擎如何。后一个限制是一个安全措施,旨在防止在 SQL 节点未连接到集群时创建名称相同的 NDB 表。如果您想在 mysqld 进程未参与 NDB 集群时使用不同存储引擎创建表,您必须重新启动服务器 without --ndbcluster 选项。