本节介绍 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命令查看哪些属性是只读的。