文档首页
MySQL 9.0 参考手册
相关文档 下载本手册
PDF (US Ltr) - 40.0Mb
PDF (A4) - 40.1Mb
手册页 (TGZ) - 258.2Kb
手册页 (Zip) - 365.3Kb
信息 (Gzip) - 4.0Mb
信息 (Zip) - 4.0Mb


MySQL 9.0 参考手册  /  ...  /  NDB 集群的 MySQL 服务器用法

25.6.10 NDB 集群的 MySQL 服务器用法

mysqld 是传统的 MySQL 服务器进程。要与 NDB 集群一起使用,mysqld 需要构建时支持 NDB 存储引擎,就像从 https://dev.mysqlserver.cn/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 节 “NDB 集群的 MySQL 服务器选项和变量”。)

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

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

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

验证您的服务器是否正在使用已启用的 NDBCLUSTER 存储引擎运行的一种简单方法是在 MySQL 监视器(mysql)中发出 SHOW ENGINES 语句。您应该会在 NDBCLUSTER 的行的 Support 值中看到值 YES。如果您在此行中看到 NO 或输出中没有显示此行,则您没有运行启用 NDB 的 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 客户端中使用 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
重要

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