### 23.6.9 NDB 集群的 MySQL 服务器使用

[](<>)[](<>)[](<>)[](<>)[](<>)

[**mysqld**](mysqld.html)是传统的 MySQL 服务器进程。要与 NDB Cluster 一起使用，[**mysqld**](mysqld.html)需要在支持的情况下构建[`新开发银行`](mysql-cluster.html)存储引擎，因为它位于预编译的二进制文件中，可从<https://dev.mysql.com/downloads/>.如果从源代码构建 MySQL，则必须调用**制作**与[`-DWITH_NDBCLUSTER=1`](source-configuration-options.html#option_cmake_with_ndbcluster)包括支持的选项`新开发银行`.

有关从源代码编译 NDB Cluster 的更多信息，请参阅[第 23.3.1.4 节，“在 Linux 上从源代码构建 NDB 集群”](mysql-cluster-install-linux-source.html)， 和[第 23.3.2.2 节，“在 Windows 上从源代码编译和安装 NDB Cluster”](mysql-cluster-install-windows-source.html).

（有关信息[**mysqld**](mysqld.html)除了本节中讨论的与 NDB Cluster 相关的选项和变量，请参阅[第 23.4.3.9 节，“NDB 集群的 MySQL 服务器选项和变量”](mysql-cluster-options-variables.html).)

如果[**mysqld**](mysqld.html)二进制文件已在集群支持下构建，[`NDBCLUSTER`](mysql-cluster.html)默认情况下，存储引擎仍处于禁用状态。您可以使用两个可能的选项之一来启用此引擎：

-   采用[`--ndbcluster`](mysql-cluster-options-variables.html#option_mysqld_ndbcluster)作为启动时命令行上的启动选项[**mysqld**](mysqld.html).

-   插入一行包含`ndbcluster`在里面`[mysqld]`你的部分`我的.cnf`文件。

    一种简单的方法来验证您的服务器是否正在运行[`NDBCLUSTER`](mysql-cluster.html)启用存储引擎是发出[`显示引擎`](show-engines.html)MySQL Monitor 中的语句 ([**mysql**](mysql.html)）。你应该看到价值`是的`作为`支持`行中的值[`NDBCLUSTER`](mysql-cluster.html).如果你看到`不`在这一行中，或者如果输出中没有显示这样的行，则您没有运行[`新开发银行`](mysql-cluster.html)- 启用版本的 MySQL。如果你看到`已禁用`在这一行中，您需要以刚才描述的两种方式之一启用它。

[](<>)[](<>)[](<>)

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

-   MySQL服务器自己的集群节点ID

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

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

    节点 ID 可以动态分配，因此不必明确指定它们。

    这[**mysqld**](mysqld.html)范围`ndb 连接字符串`用于在启动时在命令行上指定连接字符串[**mysqld**](mysqld.html)或在`我的.cnf`.连接字符串包含可以找到管理服务器的主机名或 IP 地址，以及它使用的 TCP/IP 端口。

    在以下示例中，`ndb_mgmd.mysql.com`是管理服务器所在的主机，管理服务器在1186端口监听集群消息：


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

看[第 23.4.3.3 节，“NDB 集群连接字符串”](mysql-cluster-connection-strings.html), 有关连接字符串的更多信息。

鉴于此信息，MySQL 服务器可以充当集群中的完整参与者。（我们经常提到[**mysqld**](mysqld.html)进程以这种方式作为 SQL 节点运行。）它完全了解所有集群数据节点及其状态，并与所有数据节点建立连接。在这种情况下，它可以使用任何数据节点作为事务协调器并读取和更新节点数据。

你可以在[**mysql**](mysql.html)客户端 MySQL 服务器是否连接到集群使用[`显示进程列表`](show-processlist.html).如果 MySQL 服务器连接到集群，并且您有[`过程`](privileges-provided.html#priv_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**](mysqld.html)进程必须从*两个都*选项[`--ndbcluster`](mysql-cluster-options-variables.html#option_mysqld_ndbcluster)和[`--ndb-连接字符串`](mysql-cluster-options-variables.html#option_mysqld_ndb-connectstring)（或它们的等价物`我的.cnf`）。如果[**mysqld**](mysqld.html)开始时只有[`--ndbcluster`](mysql-cluster-options-variables.html#option_mysqld_ndbcluster)选项，或者如果无法联系集群，则无法使用[`新开发银行`](mysql-cluster.html)表，*无论存储引擎如何，都无法创建任何新表*.后一个限制是一种安全措施，旨在防止创建具有相同名称的表[`新开发银行`](mysql-cluster.html)SQL 节点未连接到集群时的表。如果您希望使用不同的存储引擎创建表，而[**mysqld**](mysqld.html)进程未参与 NDB Cluster，您必须重新启动服务器*没有*这[`--ndbcluster`](mysql-cluster-options-variables.html#option_mysqld_ndbcluster)选项。
