NDB群集配置:基本示例
配置NDB群集需要使用两个文件:
my.cnf
:指定所有NDB群集可执行文件的选项。您必须在集群中运行的每个可执行文件都可以访问该文件,在以前的MySQL工作中您应该熟悉该文件。config.ini
:该文件(有时称为全局配置文件)仅由NDB群集管理服务器读取,然后将其包含的信息分发给参与群集的所有进程。config.ini
包含集群中涉及的每个节点的描述。这包括数据节点的配置参数和群集中所有节点之间的连接的配置参数。有关此文件中可能出现的各节的快速参考,以及各节中可能放置的配置参数种类,
缓存配置数据。NDB
使用有状态配置。管理服务器不是在每次重新启动管理服务器时都读取全局配置文件,而是在第一次启动时缓存配置,此后,仅当满足以下条件之一为真时,才读取全局配置文件:
- 使用--initial选项启动管理服务器。当
--initial
使用时,全局配置文件是重读,任何现有的缓存文件被删除,管理服务器创建一个新的配置缓存。 - 使用--reload选项启动管理服务器。该
--reload
选项使管理服务器将其缓存与全局配置文件进行比较。如果它们不同,则管理服务器将创建一个新的配置高速缓存;任何现有的配置缓存都会保留,但不会使用。如果管理服务器的缓存和全局配置文件包含相同的配置数据,则使用现有的缓存,并且不会创建新的缓存。 - 使用--config-cache = FALSE启动管理服务器。这将禁用
--config-cache
(默认情况下启用),并且可用于强制管理服务器完全绕过配置缓存。在这种情况下,管理服务器将忽略可能存在的任何配置文件,而始终从config.ini
文件中读取其配置数据。 - 找不到配置缓存。在这种情况下,管理服务器将读取全局配置文件并创建一个缓存,其中包含与该文件中找到的配置数据相同的配置数据。
配置缓存文件。默认情况下,管理服务器mysql-cluster
在MySQL安装目录中命名的目录中创建配置缓存文件。(如果在Unix系统上从源代码构建NDB群集,则默认位置是/usr/local/mysql-cluster
。)可以通过在运行时通过使用--configdir
选项启动管理服务器来覆盖此位置。配置缓存文件是根据模式命名的二进制文件,其中集群中管理服务器的节点ID 是缓存标识符。缓存文件使用以下顺序编号ndb_node_id_config.bin.seq_id
node_id
seq_id
seq_id
,以创建它们的顺序。管理服务器使用由决定的最新缓存文件seq_id
。
注意通过删除更高版本的配置缓存文件,或通过重命名之前的缓存文件使其具有更高的,可以回滚到先前的配置
seq_id
。但是,由于配置高速缓存文件是以二进制格式编写的,因此您不应尝试手动编辑其内容。
有关更多信息--configdir
,--config-cache
,--initial
,和--reload
为NDB集群管理服务器选项,请参见第22.4.4,“ndb_mgmd- NDB簇管理服务器守护程序”。
我们正在不断改进群集配置,并尝试简化此过程。尽管我们努力保持向后兼容性,但有时可能会引入不兼容的更改。在这种情况下,我们将尝试让群集用户提前知道更改是否向后兼容。如果您发现了这样的更改,但我们没有记录在案,请使用“如何报告错误或问题”中给出的说明在MySQL bug数据库中进行报告。
NDB群集配置:基本示例
要支持NDB群集,您将需要更新my.cnf
,如以下示例所示。您也可以在调用可执行文件时在命令行上指定这些参数。
注意此处显示的选项不应与
config.ini
全局配置文件中使用的选项混淆。全局配置选项将在本节后面讨论。
# my.cnf # example additions to my.cnf for NDB Cluster # (valid in MySQL 8.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 [ndb_mgmd] config-file=/etc/config.ini
(有关连接字符串的更多信息,请参见“ 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
重要如前所示,使用文件中的和参数启动mysqld进程后,如果不实际启动集群,则无法执行任何 or 语句。否则,这些语句将失败并显示错误。这是设计使然。
NDBCLUSTER
ndb-connectstring
[mysqld]
my.cnf
CREATE TABLE
ALTER TABLE
您还可以[mysql_cluster]
在群集my.cnf
文件中使用单独的部分,以供所有可执行文件读取和使用设置:
# cluster-specific settings [mysql_cluster] ndb-connectstring=ndb_mgmd.mysql.com:1186
有关NDB
可以在my.cnf
文件中设置的其他变量,请参见“ NDB群集系统变量”。
NDB群集全局配置文件按照约定命名config.ini
(但这不是必需的)。如果需要,它在启动时由ndb_mgmd读取,并且可以放置在它可以读取的任何位置。配置的位置和名称使用指定与ndb_mgmd在命令行上。该选项没有默认值,如果ndb_mgmd使用配置高速缓存,则该选项将被忽略。--config-file=path_name
NDB群集的全局配置文件使用INI格式,该文件由以下部分组成:各部分前面带有节标题(由方括号括起来),然后是适当的参数名称和值。与标准INI格式的一个不同之处在于,参数名称和值可以用冒号(:
)和等号(=
)分隔;但是,等号是首选。另一个偏差是,节的名称不是唯一标识的。相反,唯一节(例如相同类型的两个不同节点)由指定为该节内参数的唯一ID标识。
默认值是为大多数参数定义的,也可以在中指定config.ini
。要创建默认值部分,只需将单词添加default
到部分名称中即可。例如,一个[ndbd]
节包含适用于特定数据节点的[ndbd default]
参数,而一个节包含适用于所有数据节点的参数。假设所有数据节点应使用相同的数据存储器大小。要全部配置它们,请创建一个[ndbd default]
包含DataMemory
一行以指定数据存储器大小的部分。
如果使用,则该[ndbd default]
部分必须位于[ndbd]
配置文件中任何部分之前。default
任何其他类型的节也是如此。
注意在NDB Cluster的某些较旧版本中,没有默认值
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 Cluster,并且几乎可以肯定,对于生产设置而言这还不够。请参见“建议的NDB群集启动配置”,其中提供了更完整的示例启动配置。
每个节点在config.ini
文件中都有其自己的部分。例如,此集群有两个数据节点,因此前面的配置文件包含两个[ndbd]
定义这些节点的部分。
注意不要将注释与
config.ini
文件中的标题放在同一行;这将导致管理服务器无法启动,因为在这种情况下它无法解析配置文件。
config.ini文件的各个部分
您可以在config.ini
配置文件中使用六个不同的部分,如以下列表所述:
[computer]
:定义集群主机。配置可行的NDB群集不是必需的,但是在设置大型群集时可以将其用作方便。有关更多信息,请参见“在NDB群集中定义计算机”。[ndbd]
:定义集群数据节点(ndbd进程)。有关详细信息,请参见“定义NDB群集数据节点”。[mysqld]
:定义集群的MySQL服务器节点(也称为SQL或API节点)。有关SQL节点配置的讨论,请参见“在NDB群集中定义SQL和其他API节点”。[mgm]
或[ndb_mgmd]
:定义集群管理服务器(MGM)节点。有关管理节点的配置的信息,请参见“定义NDB群集管理服务器”。[tcp]
:定义群集节点之间的TCP / IP连接,其中TCP / IP是默认的连接协议。通常,[tcp]
或者[tcp default]
不需要部分来设置NDB群集,因为该群集会自动处理此操作。但是,在某些情况下可能有必要覆盖集群提供的默认设置。有关可用的TCP / IP配置参数以及如何使用它们的信息,请参见“ NDB群集TCP / IP连接”。(在某些情况下,您可能还会发现“使用直接连接的NDB群集TCP / IP连接”很有用。)[shm]
:定义节点之间的共享内存连接。在MySQL 8.0中,默认情况下已启用它,但仍应视为实验性的。有关SHM互连的讨论,请参见“ NDB群集共享内存连接”。[sci]
:定义集群数据节点之间的可伸缩一致性接口连接。NDB 8.0不支持。
您可以default
为每个部分定义值。如果使用,default
则应在该类型的任何其他节之前出现一个节。例如,某个[ndbd default]
节应出现在配置文件中的任何[ndbd]
节之前。
除非在MySQL Server my.cnf
或my.ini
文件中指定,否则NDB群集参数名称不区分大小写。