管理服务器是读取集群配置文件并将此信息分发给集群中所有请求它的节点的进程。它还维护集群活动的日志。管理客户端可以连接到管理服务器并检查集群的状态。
下表显示了可与 ndb_mgmd 一起使用的所有选项。表格后面是附加说明。
-
命令行格式 --bind-address=主机
类型 字符串 默认值 [无]
使管理服务器绑定到特定的网络接口(主机名或 IP 地址)。此选项没有默认值。
-
命令行格式 --character-sets-dir=路径
包含字符集的目录。
-
命令行格式 --cluster-config-suffix=名称
类型 字符串 默认值 [无]
在读取
my.cnf
中的集群配置部分时覆盖默认组后缀;用于测试。 -
命令行格式 --config-cache[=TRUE|FALSE]
类型 布尔值 默认值 TRUE
此选项的默认值为
1
(或TRUE
,或ON
),可用于禁用管理服务器的配置缓存,以便它每次启动时都从config.ini
读取其配置(请参阅 第 25.4.3 节 “NDB 集群配置文件”)。您可以通过使用以下任一选项启动 ndb_mgmd 进程来实现这一点--config-cache=0
--config-cache=FALSE
--config-cache=OFF
仅当管理服务器在启动时没有存储的配置时,使用上面列出的其中一个选项才会生效。如果管理服务器找到任何配置缓存文件,则会忽略
--config-cache
选项或--skip-config-cache
选项。因此,要禁用配置缓存,应在管理服务器 第一次 启动时使用该选项。否则,也就是说,如果您希望为 已经 创建了配置缓存的管理服务器禁用配置缓存,则必须停止管理服务器,手动删除任何现有的配置缓存文件,然后使用--skip-config-cache
(或将--config-cache
设置为等于 0、OFF
或FALSE
)重新启动管理服务器。配置缓存文件通常在安装目录下的名为
mysql-cluster
的目录中创建(除非使用--configdir
选项覆盖了此位置)。每次管理服务器更新其配置数据时,它都会写入一个新的缓存文件。这些文件按创建顺序使用以下格式依次命名ndb_node-id_config.bin.seq-number
节点 ID
是管理服务器的节点 ID;序列号
是一个序列号,从 1 开始。例如,如果管理服务器的节点 ID 为 5,则创建的前三个配置缓存文件将分别命名为ndb_5_config.bin.1
、ndb_5_config.bin.2
和ndb_5_config.bin.3
。如果您打算在不实际禁用缓存的情况下清除或重新加载配置缓存,则应使用选项
--reload
或--initial
启动 ndb_mgmd,而不是--skip-config-cache
。要重新启用配置缓存,只需重新启动管理服务器,但不要使用之前用于禁用配置缓存的
--config-cache
或--skip-config-cache
选项。当使用
--skip-config-cache
时,ndb_mgmd 不会检查配置目录(--configdir
)或尝试创建一个。(错误 #13428853) --config-file=
,文件名
-f
文件名
命令行格式 --config-file=文件
禁用方式 skip-config-file
类型 文件名 默认值 [无]
指示管理服务器应使用哪个文件作为其配置文件。默认情况下,管理服务器会在与 ndb_mgmd 可执行文件相同的目录中查找名为
config.ini
的文件;否则,必须显式指定文件名和位置。此选项没有默认值,并且只有在强制管理服务器读取配置文件时才会被忽略,因为 ndb_mgmd 是使用
--reload
或--initial
选项启动的,或者因为管理服务器找不到任何配置缓存。如果指定了--config-file
但没有指定--initial
或--reload
,则 ndb_mgmd 将拒绝启动。如果 ndb_mgmd 是使用
--config-cache=OFF
启动的,则还会读取--config-file
选项。请参阅 第 25.4.3 节 “NDB 集群配置文件” 了解更多信息。-
命令行格式 --configdir=目录
--config-dir=目录
类型 文件名 默认值 $INSTALLDIR/mysql-cluster
指定集群管理服务器的配置缓存目录。这必须是绝对路径。否则,管理服务器将拒绝启动。
--config-dir
是此选项的别名。 -
命令行格式 --connect-retries=#
类型 整数 默认值 12
最小值 0
最大值 12
放弃之前重试连接的次数。
-
命令行格式 --connect-retry-delay=#
类型 整数 默认值 5
最小值 0
最大值 5
尝试联系管理服务器之间的等待时间(以秒为单位)。
-
命令行格式 --connect-string=连接字符串
类型 字符串 默认值 [无]
与 --ndb-connectstring 相同。
-
命令行格式 --core-file
出错时写入核心文件;用于调试。
--daemon
,-d
命令行格式 --daemon
指示 ndb_mgmd 作为守护进程启动。这是默认行为。
在 Windows 平台上运行 ndb_mgmd 时,此选项无效。
-
命令行格式 --defaults-extra-file=路径
类型 字符串 默认值 [无]
在读取全局文件后读取给定文件。
-
命令行格式 --defaults-file=路径
类型 字符串 默认值 [无]
仅从给定文件读取默认选项。
-
命令行格式 --defaults-group-suffix=字符串
类型 字符串 默认值 [无]
还读取带有 concat(组,后缀) 的组。
-
命令行格式 --help
显示帮助文本并退出。
-
命令行格式 --initial
配置数据在内部缓存,而不是每次启动管理服务器时都从集群全局配置文件中读取(请参阅 第 25.4.3 节 “NDB 集群配置文件”)。使用
--initial
选项会覆盖此行为,强制管理服务器删除任何现有缓存文件,然后从集群配置文件中重新读取配置数据并构建新的缓存。这与
--reload
选项有两个不同之处。首先,--reload
强制服务器根据缓存检查配置文件,并且仅当文件的内容与缓存不同时才重新加载其数据。其次,--reload
不会删除任何现有的缓存文件。如果使用
--initial
调用 ndb_mgmd 但找不到全局配置文件,则管理服务器将无法启动。当管理服务器启动时,它会检查同一个 NDB 集群中是否有另一个管理服务器,并尝试使用另一个管理服务器的配置数据。当对具有多个管理节点的 NDB 集群执行滚动重启时,此行为会产生影响。请参阅 第 25.6.5 节 “执行 NDB 集群的滚动重启” 了解更多信息。
当与
--config-file
选项一起使用时,仅当实际找到配置文件时才会清除缓存。 -
命令行格式 --install[=name]
平台特定 Windows 类型 字符串 默认值 ndb_mgmd
使 ndb_mgmd 作为 Windows 服务安装。可以选择为服务指定一个名称;如果未设置,则服务名称默认为
ndb_mgmd
。 虽然最好在my.ini
或my.cnf
配置文件中指定其他 ndb_mgmd 程序选项,但也可以将它们与--install
一起使用。但是,在这种情况下,必须先指定--install
选项,然后再给出任何其他选项,才能成功安装 Windows 服务。通常不建议将此选项与
--initial
选项一起使用,因为这会导致每次停止和启动服务时都会擦除并重建配置缓存。 如果您打算使用任何其他影响管理服务器启动的 ndb_mgmd 选项,也应该小心,并且您应该完全理解并允许这样做可能带来的任何后果。--install
选项对非 Windows 平台没有影响。 -
命令行格式 --interactive
以交互模式启动 ndb_mgmd;也就是说,一旦管理服务器运行,就会启动一个 ndb_mgm 客户端会话。此选项不会启动任何其他 NDB 集群节点。
-
命令行格式 --log-name=name
类型 字符串 默认值 MgmtSrvr
提供要在集群日志中用于此节点的名称。
-
命令行格式 --login-path=path
类型 字符串 默认值 [无]
从登录文件中读取给定的路径。
-
命令行格式 --no-login-paths
跳过从登录路径文件读取选项。
-
命令行格式 --mycnf
从
my.cnf
文件读取配置数据。 -
命令行格式 --ndb-connectstring=connection_string
类型 字符串 默认值 [无]
设置连接字符串。语法:
[nodeid=
。覆盖id
;][host=]hostname
[:port
]NDB_CONNECTSTRING
和my.cnf
中的条目。如果指定了--config-file
,则忽略此选项;如果同时使用这两个选项,则会发出警告。 -
命令行格式 --ndb-mgm-tls=level
类型 枚举 默认值 relaxed
有效值 relaxed
strict
设置连接到管理服务器所需的 TLS 支持级别;
relaxed
或strict
之一。relaxed
(默认值)表示尝试 TLS 连接,但不要求成功;strict
表示连接需要 TLS。 -
命令行格式 --ndb-mgmd-host=connection_string
类型 字符串 默认值 [无]
与 --ndb-connectstring 相同。
-
命令行格式 --ndb-nodeid=#
类型 整数 默认值 [无]
设置此节点的节点 ID,覆盖 --ndb-connectstring 设置的任何 ID。
--ndb-optimized-node-selection
命令行格式 --ndb-optimized-node-selection
启用针对事务节点选择的优化。默认情况下启用;使用
--skip-ndb-optimized-node-selection
禁用。-
命令行格式 --ndb-tls-search-path=list
类型 路径名 默认值 (Unix) $HOME/ndb-tls
默认值 (Windows) $HOMEDIR/ndb-tls
指定要搜索 CA 文件的目录列表。在 Unix 平台上,目录名用冒号 (
:
) 分隔;在 Windows 系统上,使用分号 (;
) 作为分隔符。目录引用可以是相对的,也可以是绝对的;它可以包含一个或多个环境变量,每个环境变量都由前缀美元符号 ($
) 表示,并在使用之前进行扩展。搜索从最左侧命名的目录开始,从左到右进行,直到找到文件。空字符串表示空搜索路径,这会导致所有搜索都失败。由单个点 (
.
) 组成的字符串表示搜索路径仅限于当前工作目录。如果没有提供搜索路径,则使用编译时默认值。此值取决于所使用的平台:在 Windows 上,这是
\ndb-tls
;在其他平台(包括 Linux)上,这是$HOME/ndb-tls
。这可以通过使用-DWITH_NDB_TLS_SEARCH_PATH
编译 NDB 集群来覆盖。 -
命令行格式 --no-nodeid-checks
不执行任何节点 ID 检查。
-
命令行格式 --nodaemon
指示 ndb_mgmd 不要作为守护进程启动。
ndb_mgmd 在 Windows 上的默认行为是在前台运行,这使得此选项在 Windows 平台上是不必要的。
-
命令行格式 --no-defaults
除了登录文件之外,不要从任何选项文件中读取默认选项。
-
命令行格式 --nowait-nodes=list
类型 数字 默认值 [无]
最小值 1
最大值 255
当启动配置了两个管理节点的 NDB 集群时,每个管理服务器通常会检查另一个 ndb_mgmd 是否也在运行,以及另一个管理服务器的配置是否与其自身相同。但是,有时希望仅使用一个管理节点启动集群(并且可能允许稍后启动另一个 ndb_mgmd)。此选项使管理节点绕过对传递给此选项的节点 ID 的任何其他管理节点的任何检查,从而允许集群像配置为仅使用已启动的管理节点一样启动。
为了便于说明,请考虑
config.ini
文件的以下部分(我们省略了与此示例无关的大多数配置参数)[ndbd] NodeId = 1 HostName = 198.51.100.101 [ndbd] NodeId = 2 HostName = 198.51.100.102 [ndbd] NodeId = 3 HostName = 198.51.100.103 [ndbd] NodeId = 4 HostName = 198.51.100.104 [ndb_mgmd] NodeId = 10 HostName = 198.51.100.150 [ndb_mgmd] NodeId = 11 HostName = 198.51.100.151 [api] NodeId = 20 HostName = 198.51.100.200 [api] NodeId = 21 HostName = 198.51.100.201
假设您希望仅使用节点 ID 为
10
并在 IP 地址为 198.51.100.150 的主机上运行的管理服务器来启动此集群。(例如,假设您打算在其上运行另一个管理服务器的主机由于硬件故障暂时不可用,并且您正在等待它修复。)要以这种方式启动集群,请在 198.51.100.150 的机器上使用命令行输入以下命令$> ndb_mgmd --ndb-nodeid=10 --nowait-nodes=11
如前面的示例所示,当使用
--nowait-nodes
时,您还必须使用--ndb-nodeid
选项来指定此 ndb_mgmd 进程的节点 ID。然后,您可以像往常一样启动集群的每个数据节点。如果您希望在以后启动并使用第二个管理服务器以及第一个管理服务器,而无需重新启动数据节点,则必须使用引用两个管理服务器的连接字符串启动每个数据节点,如下所示
$> ndbd -c 198.51.100.150,198.51.100.151
对于与任何要作为连接到此集群的 NDB 集群 SQL 节点启动的 mysqld 进程一起使用的连接字符串也是如此。有关更多信息,请参阅 第 25.4.3.3 节“NDB 集群连接字符串”。
当与 ndb_mgmd 一起使用时,此选项仅影响管理节点关于其他管理节点的行为。不要将其与与 ndbd 或 ndbmtd 一起使用的
--nowait-nodes
选项混淆,该选项允许集群以少于其全部数据节点的数量启动;当与数据节点一起使用时,此选项仅影响它们关于其他数据节点的行为。可以将多个管理节点 ID 作为逗号分隔的列表传递给此选项。每个节点 ID 必须不小于 1 且不大于 255。实际上,为同一个 NDB 集群使用两个以上管理服务器的情况非常少见(或者说没有任何必要这样做);在大多数情况下,您只需要将不想在启动集群时使用的单个管理服务器的节点 ID 传递给此选项即可。
注意当您稍后启动“缺少的”管理服务器时,其配置必须与集群已在使用的管理服务器的配置相匹配。否则,它将无法通过现有管理服务器执行的配置检查,并且不会启动。
-
命令行格式 --print-defaults
打印程序参数列表并退出。
-
命令行格式 --print-full-config
显示有关集群配置的扩展信息。如果在命令行中使用此选项,则 ndb_mgmd 进程会打印有关集群设置的信息,包括集群配置节以及参数及其值的扩展列表。通常与
--config-file
(-f
) 选项一起使用。 -
命令行格式 --reload
NDB 集群配置数据存储在内部,而不是每次启动管理服务器时都从集群全局配置文件中读取(请参阅 第 25.4.3 节 “NDB 集群配置文件”)。使用此选项会强制管理服务器根据集群配置文件检查其内部数据存储,并在发现配置文件与缓存不匹配时重新加载配置。现有配置缓存文件将被保留,但不会被使用。
这与
--initial
选项有两个不同之处。首先,--initial
会导致删除所有缓存文件。其次,--initial
会强制管理服务器重新读取全局配置文件并构建新的缓存。如果管理服务器找不到全局配置文件,则
--reload
选项将被忽略。使用
--reload
时,管理服务器必须能够与集群中的数据节点和任何其他管理服务器进行通信,然后才能尝试读取全局配置文件;否则,管理服务器将无法启动。这可能是由于网络环境发生变化,例如节点的新 IP 地址或防火墙配置更改。在这种情况下,您必须改用--initial
来强制丢弃现有缓存配置并从文件中重新加载。有关更多信息,请参阅 第 25.6.5 节 “执行 NDB 集群的滚动重启”。 -
命令行格式 --remove[=name]
平台特定 Windows 类型 字符串 默认值 ndb_mgmd
删除已作为 Windows 服务安装的管理服务器进程,可以选择指定要删除的服务的名称。仅适用于 Windows 平台。
-
命令行格式 --skip-config-file
-
命令行格式 --usage
显示帮助文本并退出;与 --help 相同。
--verbose
,-v
命令行格式 --verbose
删除已作为 Windows 服务安装的管理服务器进程,可以选择指定要删除的服务的名称。仅适用于 Windows 平台。
-
命令行格式 --version
显示版本信息并退出。
启动管理服务器时,并非必须指定连接字符串。但是,如果您使用多个管理服务器,则应提供连接字符串,并且集群中的每个节点都应明确指定其节点 ID。
有关使用连接字符串的信息,请参阅 第 25.4.3.3 节 “NDB 集群连接字符串”。 第 25.5.4 节 “ndb_mgmd — NDB 集群管理服务器守护程序” 介绍了 ndb_mgmd 的其他选项。
以下文件由 ndb_mgmd 在其启动目录中创建或使用,并放置在 config.ini
配置文件中指定的 DataDir
中。在下面的列表中,node_id
是唯一的节点标识符。
config.ini
是整个集群的配置文件。此文件由用户创建并由管理服务器读取。 第 25.4 节 “NDB 集群的配置” 讨论了如何设置此文件。ndb_
是集群事件日志文件。此类事件的示例包括检查点启动和完成、节点启动事件、节点故障和内存使用级别。有关集群事件及其说明的完整列表,请参阅 第 25.6 节 “NDB 集群的管理”。node_id
_cluster.log默认情况下,当集群日志的大小达到 100 万字节时,该文件将被重命名为
ndb_
,其中node_id
_cluster.log.seq_id
seq_id
是集群日志文件的序列号。(例如:如果序列号为 1、2 和 3 的文件已存在,则下一个日志文件将使用编号4
命名。)您可以使用LogDestination
配置参数更改集群日志的大小、文件数量和其他特征。ndb_
是将管理服务器作为守护程序运行时用于node_id
_out.logstdout
和stderr
的文件。ndb_
是将管理服务器作为守护程序运行时使用的进程 ID 文件。node_id
.pid