4.5 MySQL集群管理器配置命令

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

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

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

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

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

    笔记

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

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

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

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

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

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

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

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

笔记

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

MySQL Cluster Manager 通过对每个 MySQL 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 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命令查看哪些属性是只读的。