本节介绍 MySQL 集群管理器中用于获取和设置 MySQL 集群配置中使用的各种类型值的命令。我们首先讨论术语“配置属性”的含义,以及这与使用您可能已经熟悉的 MySQL Cluster 配置参数和 MySQL Server 选项和变量手动配置 MySQL Cluster 的关系。
配置属性。 传统上,在管理 MySQL Cluster 时,有必要区分 3 种类型的配置数据:
MySQL Cluster Manager 通过将所有 3 种类型的配置数据视为 属性来简化此配置方案,其中术语 “属性”指的是 MySQL Cluster 配置参数、MySQL Server 变量或与一个或多个 MySQL Cluster 一起使用的命令行选项二进制程序。它透明地执行此操作,在统一界面中处理所有必要的更改。
假设您想知道有多少数据内存分配给给定 MySQL 集群中的数据节点。不必确定这是使用
DataMemory
写入文件中的配置参数控制的config.ini
,然后读取该文件以查找值,您只需调用 MySQL Cluster Managerget
命令,MySQL Cluster Manager 会为您处理从文件中读取的操作,并显示值,而无需在单独的应用程序(例如more或
less )中打开文件。如果您希望更改分配给数据节点的数据内存量,您可以发出 MySQL Cluster Manager set
(或
reset
) 命令; MySQL Cluster Manager 然后将所需的值写入config.ini
. 如果——就像这种情况一样——
DataMemory
更新正在运行的 MySQL 集群中的配置值需要执行滚动重启,MySQL 集群管理器可以自动执行此操作,以便配置更改生效,而无需操作员进一步干预.
默认值被硬编码到 MySQL 集群中;您可以覆盖给定配置属性的默认值(使用
set
命令)或将给定属性值重置为其默认值(使用
reset
命令),但您不能更改默认值本身。您可以使用单个
set
或
reset
命令在进程级别或实例级别设置或重置配置属性的值。一旦设置或重置配置属性的值,此值将一直存在,直到通过执行另一个
set
或reset
命令更改它为止。
设置或重置配置属性值时,必须指定应用设置的级别。
MySQL Cluster Manager 通过对每个 MySQL Cluster 进程执行以下步骤来确定用于与给定进程相关的配置属性的值:
(对于每个配置属性:)
是否为该进程的节点 ID 定义了属性值?
是:使用为此节点 ID 定义的值,然后退出。
否:继续下一步。
是否在进程级别指定了一个属性值,即针对该类型的所有进程?
是:使用为该类型的所有进程指定的值,然后退出。
否:使用适用于此类进程的默认值,然后退出。
(在刚才所示的步骤中,“ 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
命令查看哪些属性是只读的。