4.5 MySQL集群管理器配置命令

本节介绍 MySQL Cluster Manager 中用于获取和设置 MySQL NDB Cluster 配置中使用的各种类型值的命令。我们首先讨论术语 配置属性的含义,以及这与使用您可能已经熟悉的 MySQL NDB Cluster 配置参数和 MySQL Server 选项和变量手动配置 MySQL NDB Cluster 的关系。

配置属性。  传统上,在管理 MySQL NDB Cluster 时,有必要区分 3 种类型的配置数据:

  • 管理服务器(或服务器)读取的 MySQL NDB Cluster 全局配置文件中设置的 配置参数,按照约定命名config.ini

  • 通过使用mysql命令行客户端(或另一个 MySQL 客户端应用程序) 中的 SQLSET语句在 正在运行的 MySQL 服务器(SQL 节点)中设置 配置变量

  • 调用 MySQL NDB Cluster 可执行程序时传递给它们的 配置选项

    笔记

    传递给mysqld的配置选项 通常具有设置配置变量值的效果,其中许多(但不是全部)可以使用 MySQL 客户端应用程序(如mysql )在正在运行的 MySQL 服务器中覆盖。

MySQL Cluster Manager 通过将所有 3 种类型的配置数据视为 属性来简化此配置方案,其中术语 属性指的是 MySQL NDB Cluster 配置参数、MySQL Server 变量或与一个或多个 MySQL 一起使用的命令行选项NDB Cluster 二进制程序。它透明地执行此操作,在统一界面中处理所有必要的更改。

假设您想知道有多少数据内存分配给给定 MySQL NDB Cluster 中的数据节点。不必确定这是使用 DataMemory写入文件中的配置参数控制的config.ini ,然后读取该文件以查找值,您只需调用 MySQL Cluster Managerget命令,MySQL Cluster Manager 会为您处理从文件中读取的操作,并显示值,而无需在单独的应用程序(例如moreless )中打开文件。如果您希望更改分配给数据节点的数据内存量,您可以发出 MySQL Cluster Manager set(或 reset) 命令; MySQL Cluster Manager 然后将所需的值写入config.ini. 如果 DataMemory在运行的 MySQL NDB Cluster 中更新配置值需要执行滚动重启,则 MySQL Cluster Manager 可以自动执行此操作,以便配置更改生效,而无需进一步干预操作员。

配置属性级别。  配置属性值适用于三个级别之一,如下所述:

  • 默认值:此值始终由该属性适用的类型(例如 ndbdmysqld)的任何 MySQL NDB Cluster 进程使用,除非该值被用户覆盖。

  • Process:此值用于给定类型的 MySQL NDB Cluster 进程的所有实例。

  • Instance:此值用于 MySQL NDB Cluster 进程的特定实例,该实例由其 MySQL NDB Cluster 节点 ID 标识。

默认值被硬编码到 MySQL NDB Cluster 中;您可以覆盖给定配置属性的默认值(使用 set命令)或将给定属性值重置为其默认值(使用 reset命令),但您不能更改默认值本身。您可以使用单个 setreset命令在进程级别或实例级别设置或重置配置属性的值。一旦设置或重置配置属性的值,此值将一直存在,直到通过执行另一个 setreset命令更改它为止。

笔记

设置或重置配置属性值时,必须指定应用设置的级别。

MySQL Cluster Manager 通过对每个 MySQL NDB Cluster 进程执行以下步骤来确定用于与给定进程相关的配置属性的值:

(对于每个配置属性:)

  1. 是否为该进程的节点 ID 定义了属性值?

    :使用为此节点 ID 定义的值,然后退出。

    :继续下一步。

  2. 是否在进程级别指定了一个属性值,即针对该类型的所有进程?

    :使用为该类型的所有进程指定的值,然后退出。

    :使用适用于此类进程的默认值,然后退出。

(在刚才所示的步骤中,exit可以理解为 如果还有更多适用于该进程的配置属性尚未设置,则继续进行下一个属性,直到没有更多的属性可以为该进程设置。)

笔记

最近指定的值优先。这意味着如果您为特定进程设置配置属性,然后稍后为该属性指定进程级值,则该进程级值将用于该类型的所有进程,包括您先前为其设置实例的实例-特定值。

强制属性。  某些属性必须在 MySQL Cluster Manager 中在进程类型或实例级别定义,以使集群配置有效的适用类型或类型的所有进程。此类 强制属性可以更改,但不能重置;换句话说,可以更改定义,但不能完全删除定义本身。另一种表述方式是强制属性没有默认值。

强制属性的一个例子是NodeId。如果您尝试重置强制属性,尝试会失败并出现错误,如下所示:

mcm> reset NodeId:ndb_mgmd:1 mycluster;
ERROR 6007 (00MGR): Config attribute NodeId is mandatory and cannot be reset
mcm> reset NodeId:ndbd:2 mycluster;
ERROR 6007 (00MGR): Config attribute NodeId is mandatory and cannot be reset
mcm> reset NodeId:mysqld:4 mycluster;
ERROR 6007 (00MGR): Config attribute NodeId is mandatory and cannot be reset

只读属性。 只读属性是在创建集群时必须由 MySQL 集群管理器定义的属性 。用户既不能更改也不能重置只读属性。这意味着只读属性始终是强制属性。

其中一个属性是HostName,它对于任何类型的 MySQL NDB Cluster 进程都是只读的。任何更改或重置只读属性的尝试都会失败,如下所示:

mcm> reset HostName:ndb_mgmd mycluster;
ERROR 6008 (00MGR): Config attribute HostName is readonly and cannot be changed
mcm> reset HostName:ndbd mycluster;
ERROR 6008 (00MGR): Config attribute HostName is readonly and cannot be changed
mcm> reset HostName:mysqld mycluster;
ERROR 6008 (00MGR): Config attribute HostName is readonly and cannot be changed

mcm> set HostName:ndb_mgmd mycluster;
ERROR 6008 (00MGR): Config attribute HostName is readonly and cannot be changed
mcm> set HostName:ndbd mycluster;
ERROR 6008 (00MGR): Config attribute HostName is readonly and cannot be changed
mcm> set HostName:mysqld mycluster;
ERROR 6008 (00MGR): Config attribute HostName is readonly and cannot be changed

创建集群时设置强制或只读属性。强制属性和只读属性都不能重置。(除了创建集群时为它设置的值外,这两种属性都没有默认值。)用户可以随时更改强制属性;一旦创建了集群,就无法更改只读属性。get您可以使用该命令 获取强制属性和只读属性的列表。

也可以在ndb_config --configinfo --xml的输出中找到属性属性列表(请参阅 ndb_config — 提取 NDB 集群配置信息);有关更多完整信息,请参阅 NDB Cluster 的配置

出于集群稳定性和性能的原因,MySQL Cluster Manager 在内部确定哪些属性被视为只读。您可以使用该get命令查看哪些属性是只读的。

仅限命令行的属性。  仅限命令行的属性是在 MySQL Cluster Manager 之外时必须指定为命令行选项而不是配置文件中的参数的属性(例如, config.inimy.cnf)。这些包括 ndb_mgmdndbdndbmtd节点的所有命令行选项,以及 服务器选项、系统变量和状态变量参考中列出的 在选项文件中无效的mysqld选项。但是,可以使用 MySQL Cluster Manager 配置少数这些仅命令行 属性 setreset命令,它们的值可以用 get命令检查;他们包括:

getset和 命令 支持的这些仅限命令行的属性 在命令输出 的 列reset中标有 :Command LineCommentget

mcm> set core-file:ndb_mgmd mycluster;
+-----------------------------------+
| Command result                    |
+-----------------------------------+
| Cluster reconfigured successfully |
+-----------------------------------+
1 row in set (32.43 sec)

mcm> get -d core-file:ndb_mgmd mycluster;
+-----------+-------+----------+---------+----------+---------+---------+--------------+
| Name      | Value | Process1 | NodeId1 | Process2 | NodeId2 | Level   | Comment      |
+-----------+-------+----------+---------+----------+---------+---------+--------------+
| core-file |       | ndb_mgmd | 49      |          |         | Process | Command Line |
+-----------+-------+----------+---------+----------+---------+---------+--------------+
1 row in set (0.07 sec)

mcm> reset core-file:ndb_mgmd mycluster;
+-----------------------------------+
| Command result                    |
+-----------------------------------+
| Cluster reconfigured successfully |
+-----------------------------------+
1 row in set (9.57 sec)

mcm> get -d core-file:ndb_mgmd mycluster;
+-----------+-------+----------+---------+----------+---------+---------+--------------+
| Name      | Value | Process1 | NodeId1 | Process2 | NodeId2 | Level   | Comment      |
+-----------+-------+----------+---------+----------+---------+---------+--------------+
| core-file | false | ndb_mgmd | 49      |          |         | Default | Command Line |
+-----------+-------+----------+---------+----------+---------+---------+--------------+
1 row in set (0.05 sec)