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二进制文件已经被构建以支持集群,则NDBCLUSTER
存储引擎默认处于禁用状态。您可以使用以下两个可能的选项来启用该引擎:
-
在启动mysqld时,在命令行中使用
--ndbcluster
选项。 -
在您的
my.cnf
文件的[mysqld]
部分插入一行,包含ndbcluster
。
验证服务器是否启用了NDBCLUSTER
存储引擎的简单方法是,在MySQL Monitor(mysql)中执行SHOW ENGINES
语句。您应该在NDBCLUSTER
行中看到值YES
作为Support
值。如果您在该行中看到NO
或没有该行显示在输出结果中,您不是运行NDB
-启用的MySQL版本。如果您在该行中看到DISABLED
,则需要在上述两种方式之一中启用它。
读取集群配置数据时,MySQL服务器至少需要三个信息:
-
MySQL服务器自己的集群节点ID
-
管理服务器的主机名或IP地址
-
可以连接到管理服务器的TCP/IP端口号
节点ID可以动态分配,因此不需要严格指定它们。
参数mysqldndb-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 Cluster Connection Strings”,了解更多关于连接字符串的信息。
基于此信息,MySQL服务器可以充当集群中的完整参与者。 (我们通常将在这种情况下运行的mysqld进程称为SQL节点。)它对所有集群数据节点都有 awareness,并且与所有数据节点建立连接。在这种情况下,它可以使用任何数据节点作为事务协调员,并读取和更新节点数据。
您可以在 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