25.4.3.1 NDB 集群配置:基本示例
要支持 NDB 集群,您需要将my.cnf
更新到以下示例中所示的方式。您也可以在启动可执行文件时指定这些参数。
这里显示的选项不要与在config.ini
全局配置文件中使用的选项混淆。全球配置选项将在本节后面讨论。
# my.cnf
# example additions to my.cnf for NDB Cluster
# (valid in MySQL 8.4)
# enable ndbcluster storage engine, and provide connection string for
# management server host (default port is 1186)
[mysqld]
ndbcluster
ndb-connectstring=ndb_mgmd.mysql.com
# provide connection string for management server host (default port: 1186)
[ndbd]
connect-string=ndb_mgmd.mysql.com
# provide connection string for management server host (default port: 1186)
[ndb_mgm]
connect-string=ndb_mgmd.mysql.com
# provide location of cluster configuration file
# IMPORTANT: When starting the management server with this option in the
# configuration file, the use of --initial or --reload on the command line when
# invoking ndb_mgmd is also required.
[ndb_mgmd]
config-file=/etc/config.ini
(关于连接字符串的更多信息,请见第25.4.3.3节,“NDB 集群连接字符串”。)
# my.cnf
# example additions to my.cnf for NDB Cluster
# (works on all versions)
# enable ndbcluster storage engine, and provide connection string for management
# server host to the default port 1186
[mysqld]
ndbcluster
ndb-connectstring=ndb_mgmd.mysql.com:1186
一旦您使用NDBCLUSTER
和ndb-connectstring
参数在my.cnf
文件的[mysqld]部分启动了mysqld进程,您就不能执行任何CREATE TABLE
或ALTER TABLE
语句,除非您实际启动了集群。否则,这些语句将失败并显示错误。这是一种设计选择。
您也可以在集群my.cnf
文件的[mysql_cluster]部分使用一个独立的section来读取和使用所有可执行文件的设置:
# cluster-specific settings
[mysql_cluster]
ndb-connectstring=ndb_mgmd.mysql.com:1186
为了查看更多关于NDB
变量的信息,请参阅第25.4.3.9.2节,“NDB Cluster System Variables”。
NDB集群的全局配置文件通常命名为config.ini
(但这不是必需的)。如果需要,它将在ndb_mgmd启动时被读取,可以放在--config-file=
命令行参数中指定的位置和名称。这个选项没有默认值,如果ndb_mgmd使用配置缓存,这个选项将被忽略。path_name
NDB 集群的全局配置文件使用 INI 格式,该格式由以方括号开头的节区(surrounded by square brackets),后跟着相应的参数名称和值组成。INI 格式的一个偏离是,参数名称和值可以用冒点 (:
) 和等号 (=
) 分隔,但是等号被推荐使用。另一个偏离是,节区不由节名唯一标识,而是通过在节区中指定的唯一 ID 标识唯一节区(例如两个相同类型的节点)。
大多数参数都有默认值,可以在 config.ini
文件中指定。要创建一个默认值节区,只需将单词 default
添加到节名中。例如,[ndbd]
节包含特定数据节点的参数,而 [ndbd default]
节包含所有数据节点的参数。如果想让所有数据节点使用相同的数据内存大小,可以创建一个 [ndbd default]
节,并在其中添加一个 DataMemory
行来指定数据内存大小。
如果使用,[ndbd default]
节必须在配置文件中排在 [ndbd]
节之前。这同样适用于其他类型的默认节区。
在 NDB 集群的某些较旧版本中,没有默认值 дляNoOfReplicas
,因此总是需要在[ndbd default]
部分中显式指定该参数。虽然这个参数现在有一个默认值为 2,但是大多数常见使用场景下推荐的设置仍然是明确地设置该参数。
全局配置文件必须定义参与集群的计算机和节点,以及这些节点在哪些计算机上运行。以下是一个简单的配置文件,用于一个由一个管理服务器、两个数据节点和两个 MySQL 服务器组成的集群:
# file "config.ini" - 2 data nodes and 2 SQL nodes
# This file is placed in the startup directory of ndb_mgmd (the
# management server)
# The first MySQL Server can be started from any host. The second
# can be started only on the host mysqld_5.mysql.com
[ndbd default]
NoOfReplicas= 2
DataDir= /var/lib/mysql-cluster
[ndb_mgmd]
Hostname= ndb_mgmd.mysql.com
DataDir= /var/lib/mysql-cluster
[ndbd]
HostName= ndbd_2.mysql.com
[ndbd]
HostName= ndbd_3.mysql.com
[mysqld]
[mysqld]
HostName= mysqld_5.mysql.com
前面的示例旨为熟悉 NDB 集群的最小启动配置,但几乎肯定不能满足生产设置。请参阅第 25.4.3.2 节,“NDB 集群的推荐启动配置”,该节提供了一个更完整的示例启动配置。
每个节点都有自己的部分在config.ini
文件中。例如,这个集群有两个数据节点,所以前面的配置文件包含两个[ndbd]
部分,定义这些节点。
不要将注释置于config.ini
文件中的节头同一行上;这样会导致管理服务器无法启动,因为它不能解析这种配置文件。
在config.ini
配置文件中,您可以使用六种不同的部分,以下是这些部分的描述:
-
[计算机]
: 定义集群主机。这不是配置可行的 NDB 集群所必需的,但可以在设置大型集群时使用。有关更多信息,请参阅第 25.4.3.4 节,“NDB 集群中的计算机定义”。 -
[ndbd]
: 定义集群数据节点(ndbd 进程)。有关详细信息,请参阅第 25.4.3.6 节,“NDB 集群数据节点定义”。 -
[mysqld]
: 定义集群的 MySQL 服务器节点(也称为 SQL 或 API 节点)。有关 SQL 节点配置的讨论,请参阅第 25.4.3.7 节,“NDB 集群中的 SQL 和其他 API 节点定义”。 -
[mgm]
或[ndb_mgmd]
: 定义集群管理服务器(MGM)节点。有关管理节点配置的信息,请参阅第 25.4.3.5 节,“NDB 集群管理服务器定义”。 -
[tcp]
: 定义集群节点之间的 TCP/IP 连接,TCP/IP 是默认传输协议。通常情况下,不需要在配置文件中添加[tcp]
或[tcp default]
部分,因为集群可以自动处理这个问题;然而,在某些情况下可能需要覆盖集群提供的默认值。请参阅第 25.4.3.10 节,“NDB 集群 TCP/IP 连接”,了解可用的 TCP/IP 配置参数和如何使用它们。 (您可能还会发现第 25.4.3.11 节,“NDB 集群 TCP/IP 连接使用直接连接”在某些情况下是有用的。) -
[shm]
: 定义节点之间的共享内存连接。在 MySQL 8.4 中,默认启用,但仍然应该被视为实验性功能。关于 SHM 互连的讨论,请参阅第 25.4.3.12 节,“NDB 集群共享内存连接”。 -
[sci]
: 定义 Scalable Coherent Interface 连接集群数据节点之间。NDB 8.4 中不支持。
您可以为每个部分定义default
值。如果使用,default
部分应该在该类型的其他部分之前出现。例如,[ndbd default]
部分在配置文件中应该出现在任何[ndbd]
部分之前。
NDB集群参数名称是大小写不敏感的,除非在MySQL服务器中的my.cnf
或my.ini
文件中指定。