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 版本。如果您看到这一行,则需要以刚刚描述的两种方式之一启用它。
YES
Support
NDBCLUSTER
NO
NDB
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
有关连接字符串的更多信息,请参阅第 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
选项的情况下重新启动服务器。