21.3.3.1 NDB 群集配置:基本示例
要支持 NDB 群集,您将需要更新my.cnf
,如以下示例所示。您也可以在调用可执行文件时在命令行上指定这些参数。
Note
此处显示的选项不应与config.ini
全局配置文件中使用的选项混淆。全局配置选项将在本节后面讨论。
# my.cnf
# example additions to my.cnf for NDB Cluster
# (valid in MySQL 5.7)
# 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
[ndb_mgmd]
config-file=/etc/config.ini
(有关连接字符串的更多信息,请参见第 21.3.3.3 节“ NDB 群集连接字符串”。)
# my.cnf
# example additions to my.cnf for NDB Cluster
# (will work 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
Important
如前所示,一旦在my.cnf
文件中[mysqld]
中的NDBCLUSTER和ndb-connectstring
参数中启动了mysqld进程,就无法执行任何CREATE TABLE或ALTER TABLE语句,而无需实际启动集群。否则,这些语句将失败并显示错误。 这是设计使然。
您还可以在群集my.cnf
文件中使用单独的[mysql_cluster]
部分,以供所有可执行文件读取和使用设置:
# cluster-specific settings
[mysql_cluster]
ndb-connectstring=ndb_mgmd.mysql.com:1186
有关可以在my.cnf
文件中设置的其他NDB变量,请参见第 21.3.3.9.2 节“ NDB 集群系统变量”。
NDB 群集全局配置文件按照惯例名为config.ini
(但这不是必需的)。如果需要,启动时由ndb_mgmd读取,并且可以将其放在可以读取的任何位置。在命令行上使用--config-file=path_name和ndb_mgmd指定配置的位置和名称。该选项没有默认值,如果ndb_mgmd使用配置缓存,则该选项将被忽略。
NDB 群集的全局配置文件使用 INI 格式,该文件由以下部分组成:各部分前面带有节标题(由方括号括起来),然后是适当的参数名称和值。与标准 INI 格式的一种不同是,参数名称和值可以用冒号(:
)和等号(=
)分隔;但是,等号是首选。另一个偏差是,节的名称不是唯一标识的。相反,唯一节(例如相同类型的两个不同节点)由指定为该节内参数的唯一 ID 标识。
默认值是为大多数参数定义的,也可以在config.ini
中指定。要创建默认值部分,只需在部分名称中添加单词default
即可。例如,[ndbd]
部分包含适用于特定数据节点的参数,而[ndbd default]
部分包含适用于所有数据节点的参数。假设所有数据节点应使用相同的数据存储器大小。要全部配置它们,请创建一个[ndbd default]
节,其中包含DataMemory行以指定数据存储器的大小。
如果已使用,则[ndbd default]
部分必须位于配置文件中任何[ndbd]
部分的前面。对于任何其他类型的default
节也是如此。
Note
在 NDB Cluster 的某些较旧版本中,NoOfReplicas没有默认值,始终必须在[ndbd default]
部分中明确指定。尽管此参数的默认值现在为 2,这是大多数常见使用情况下的建议设置,但仍建议实践明确地设置此参数。
全局配置文件必须定义群集中涉及的计算机和节点,以及这些节点位于哪些计算机上。此处显示了一个群集的简单配置文件示例,该群集由一个 Management 服务器,两个数据节点和两个 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
Note
前面的示例旨在作为最小的启动配置,以使您熟悉 NDB Cluster,并且几乎可以肯定,对于生产设置而言这还不够。请参阅第 21.3.3.2 节“推荐的 NDB 群集启动配置”,它提供了更完整的示例启动配置。
每个节点在config.ini
文件中都有自己的部分。例如,此集群有两个数据节点,因此前面的配置文件包含两个[ndbd]
节来定义这些节点。
Note
不要将 Comments 与config.ini
文件中的节标题放在同一行。这将导致 Management 服务器无法启动,因为在这种情况下它无法解析配置文件。
config.ini 文件的各个部分
您可以在config.ini
配置文件中使用六个不同的部分,如以下列 table 所述:
-
[computer]
:定义集群主机。配置可行的 NDB 群集不是必需的,但是在设置大型群集时可以将其用作方便。有关更多信息,请参见第 21.3.3.4 节“在 NDB 群集中定义计算机”。 -
[ndbd]
:定义集群数据节点(ndbd进程)。有关详情,请参见第 21.3.3.6 节,“定义 NDB 群集数据节点”。 -
[mysqld]
:定义集群的 MySQL 服务器节点(也称为 SQL 或 API 节点)。有关 SQL 节点配置的讨论,请参见第 21.3.3.7 节“在 NDB 群集中定义 SQL 和其他 API 节点”。 -
[mgm]
或[ndb_mgmd]
:定义集群 Management 服务器(MGM)节点。有关 Management 节点的配置的信息,请参阅第 21.3.3.5 节,“定义 NDB 群集 Management 服务器”。 -
[tcp]
:定义群集节点之间的 TCP/IP 连接,其中 TCP/IP 是默认的传输协议。通常,设置 NDB 群集不需要[tcp]
或[tcp default]
部分,因为该群集会自动处理此操作。但是,在某些情况下可能有必要覆盖集群提供的默认设置。有关可用的 TCP/IP 配置参数以及如何使用它们的信息,请参见第 21.3.3.10 节“ NDB 群集 TCP/IP 连接”。 (在某些情况下,您可能还会发现第 21.3.3.11 节“使用直接连接的 NDB 群集 TCP/IP 连接”很有意思。) -
[shm]
:定义节点之间的共享内存连接。在 MySQL 5.7 中,默认情况下已启用它,但仍应视为实验性的。有关 SHM 互连的讨论,请参见第 21.3.3.12 节“ NDB 群集共享内存连接”。 -
[sci]
:定义集群数据节点之间的可伸缩一致性接口连接。 NDB 7.5 或 7.6 不支持。
您可以为每个部分定义default
个值。如果使用了default
部分,则应在该类型的其他任何部分之前。例如,[ndbd default]
节应出现在配置文件中任何[ndbd]
节之前。
除非在 MySQL Server my.cnf
或my.ini
文件中指定,否则 NDB 群集参数名称不区分大小写。