为了支持 NDB 集群,您应该更新 my.cnf
,如以下示例所示。您也可以在调用可执行文件时在命令行中指定这些参数。
此处显示的选项不应与 config.ini
全局配置文件中使用的选项混淆。全局配置选项将在本节后面讨论。
# my.cnf
# example additions to my.cnf for NDB Cluster
# (valid in MySQL 9.0)
# 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
启动一个带有 mysqld 进程后 NDBCLUSTER
和 ndb-connectstring
参数在 [mysqld]
中 my.cnf
文件中,如前所示,您不能执行任何 CREATE TABLE
或 ALTER TABLE
语句,而无需实际启动集群。否则,这些语句会因错误而失败。 这是设计使然.
您也可以在集群 my.cnf
文件中使用单独的 [mysql_cluster]
部分来设置所有可执行文件读取和使用的设置
# cluster-specific settings
[mysql_cluster]
ndb-connectstring=ndb_mgmd.mysql.com:1186
有关可以在 my.cnf
文件中设置的更多 NDB
变量,请参见 第 25.4.3.9.2 节,“NDB 集群系统变量”.
NDB 集群全局配置文件按照惯例命名为 config.ini
(但这并非必需)。如果需要,它将在启动时由 ndb_mgmd 读取,并且可以放置在它可以读取的任何位置。配置的位置和名称使用 --config-file=
指定,在命令行中使用 ndb_mgmd。此选项没有默认值,并且如果 ndb_mgmd 使用配置缓存,则会被忽略。path_name
NDB 集群的全局配置文件使用 INI 格式,该格式由以节标题(用方括号括起来)开头的节组成,后面跟着相应的参数名称和值。与标准 INI 格式的唯一区别是,参数名称和值可以用冒号 (:
) 和等号 (=
) 分隔;但是,首选等号。另一个区别是,节不是通过节名称来唯一标识的。相反,唯一节(例如两种不同类型的两个不同节点)通过在节中指定的唯一 ID 来标识。
大多数参数都有默认值,也可以在 config.ini
中指定。要创建默认值节,只需将单词 default
添加到节名称中即可。例如,一个 [ndbd]
节包含应用于特定数据节点的参数,而一个 [ndbd default]
节包含应用于所有数据节点的参数。假设所有数据节点都应该使用相同的数据内存大小。要配置所有节点,创建一个包含 DataMemory
行的 [ndbd default]
节来指定数据内存大小。
如果使用,[ndbd default]
节必须出现在配置文件中的任何 [ndbd]
节之前。这对于任何其他类型的 default
节也是如此。
在 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 集群 的最小入门配置,以便熟悉 NDB 集群,几乎肯定不足以用于生产环境。请参见 第 25.4.3.2 节,“NDB 集群的推荐入门配置”,其中提供了更完整的示例入门配置。
每个节点在 config.ini
文件中都有自己的节。例如,此集群有两个数据节点,因此上述配置文件包含两个 [ndbd]
节来定义这些节点。
不要在 config.ini
文件中节标题所在的同一行上放置注释;这会导致管理服务器无法启动,因为它在这种情况下无法解析配置文件。
config.ini 文件的节
在 config.ini
配置文件中,您可以使用六个不同的节,如以下列表所述
[computer]
: 定义集群主机。这对于配置可行的 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]
节来设置 NDB 集群,因为集群会自动处理此操作;但是,在某些情况下,可能需要覆盖集群提供的默认值。有关可用的 TCP/IP 配置参数以及如何使用它们的 信息,请参见 第 25.4.3.10 节,“NDB 集群 TCP/IP 连接”。(在某些情况下,您可能还会发现 第 25.4.3.11 节,“使用直接连接的 NDB 集群 TCP/IP 连接” 有用。)[shm]
: 定义节点之间的共享内存连接。在 MySQL 9.0 中,它默认启用,但仍应被视为实验性功能。有关 SHM 互连的讨论,请参见 第 25.4.3.12 节,“NDB 集群共享内存连接”.[sci]
: 定义集群数据节点之间的可扩展一致接口连接。在 NDB 9.0 中不支持。
您可以为每个节定义 default
值。如果使用,default
节应该出现在任何其他同类型节之前。例如,一个 [ndbd default]
节应该出现在配置文件中的任何 [ndbd]
节之前。
NDB 集群参数名称不区分大小写,除非在 MySQL 服务器 my.cnf
或 my.ini
文件中指定。