NDB Cluster 7.5 中的主要变化和新特性可能会引起人们的兴趣,如下表所示:
ndbinfo 增强功能。 数据库中进行了许多更改
ndbinfo
,其中最主要的是它现在提供有关 NDB Cluster 节点配置参数的详细信息。该
config_params
表已设为只读,并通过附加列进行了增强,这些列提供有关每个配置参数的信息,包括参数的类型、默认值、最大值和最小值(如果适用)、参数的简要说明以及是否参数是必需的。该表还为每个参数提供了唯一的param_number
.表中的一行
config_values
显示具有指定 ID 的节点上给定参数的当前值。该参数由config_param
列的值标识,该值映射到config_params
表的param_number
.使用这种关系,您可以在这两个表上编写连接,以按名称获取一个或多个 NDB Cluster 配置参数的默认值、最大值、最小值和当前值。此处显示了使用此类连接的示例 SQL 语句:
SELECT p.param_name AS Name, v.node_id AS Node, p.param_type AS Type, p.param_default AS 'Default', p.param_min AS Minimum, p.param_max AS Maximum, CASE p.param_mandatory WHEN 1 THEN 'Y' ELSE 'N' END AS 'Required', v.config_value AS Current FROM config_params p JOIN config_values v ON p.param_number = v.config_param WHERE p. param_name IN ('NodeId', 'HostName','DataMemory', 'IndexMemory');
有关这些更改的更多信息,请参阅 第 21.6.15.8 节,“ndbinfo config_params 表”。有关更多信息和示例, 请参阅 第 21.6.15.9 节,“ndbinfo config_values 表” 。
此外,
ndbinfo
数据库不再依赖于MyISAM
存储引擎。所有ndbinfo
表和视图现在都使用NDB
(显示为NDBINFO
)。ndbinfo
NDB 7.5.4 中引入了 几个新表。此处列出了这些表格,并附有简要说明:dict_obj_info
在 中提供数据库对象的名称和类型NDB
,以及适用时有关父对象的信息table_distribution_status
提供NDB
表分布状态信息table_fragments
提供有关NDB
表碎片 分布的信息table_info
提供有关日志记录、检查点、存储和其他对每个NDB
表 有效的选项的信息table_replicas
提供有关片段副本的信息
有关详细信息,请参阅各个表的说明。
默认行和列格式更改。
ROW_FORMAT
从 NDB 7.5.1 开始,选项和COLUMN_FORMAT
选项 的默认值都CREATE TABLE
可以设置为DYNAMIC
而不是 , 作为此更改的一部分添加了FIXED
使用新的 MySQL 服务器变量 ;ndb_default_column_format
将其设置为FIXED
or (或使用等效选项DYNAMIC
启动mysqld--ndb-default-column-format=FIXED
)以强制将此值用于COLUMN_FORMAT
andROW_FORMAT
。在 NDB 7.5.4 之前,此变量的默认值为DYNAMIC
; 在此版本和更高版本中,默认值为FIXED
,它提供与先前版本的向后兼容性(缺陷号 24487363)。现有表格列使用的行格式和列格式不受此更改的影响。添加到此类表的新列使用这些的新默认值(可能被 覆盖
ndb_default_column_format
),并且现有列也更改为使用这些,前提是ALTER TABLE
执行此操作的语句指定ALGORITHM=COPY
。笔记如果mysqld与 一起运行,
ALTER TABLE
则无法隐式完成 复制。--ndb-allow-copying-alter-table=FALSE
ndb_binlog_index 不再依赖于 MyISAM。 从 NDB 7.5.2 开始,
ndb_binlog_index
NDB Cluster Replication 中使用的表现在使用InnoDB
存储引擎而不是MyISAM
. 升级时,可以运行 mysql_upgrade with 使其 在该表上执行。为了向后兼容,仍支持 使用 此表。--force
--upgrade-system-tables
ALTER TABLE ... ENGINE=INNODB
MyISAM
此更改的一个好处是它可以依赖于此表的事务行为和无锁读取,这有助于缓解清除操作和日志轮换期间的并发问题,并提高此表的可用性。
ALTER TABLE 更改。 NDB Cluster 以前支持 online 的替代语法
ALTER TABLE
。这在 NDB Cluster 7.5 中不再受支持,它ALGORITHM = DEFAULT|COPY|INPLACE
像在标准 MySQL 服务器中一样专用于表 DDL。影响此语句使用的另一个更改是,
ALTER TABLE ... ALGORITHM=INPLACE RENAME
除了重命名之外,现在可能还包含 DDL 操作。ExecuteOnComputer 参数已弃用。 管理节点、 数据节点和 API 节点 的
ExecuteOnComputer
配置参数 已被弃用,现在将在 NDB Cluster 的未来版本中删除。您应该对所有三种类型的节点使用等效参数。HostName
记录每键优化。 NDB 处理程序现在为 MySQL 5.7.5 中的优化器实现的索引统计信息使用 records-per-key 接口。此更改的一些好处包括此处列出的那些:
在许多情况下,优化器现在会选择更好的执行计划,而以前会选择不太理想的连接索引或表连接顺序
显示的行估计
EXPLAIN
更准确显示的基数估计
SHOW INDEX
得到改进
连接池节点 ID。 NDB 7.5.0 增加了mysqld
--ndb-cluster-connection-pool-nodeids
选项,允许为连接池设置一组节点 ID。此设置覆盖--ndb-nodeid
,这意味着它还会覆盖--ndb-connectstring
选项和NDB_CONNECTSTRING
环境变量。笔记您可以使用mysqld
--ndb-cluster-connection-pool
的 选项 设置连接池的大小 。create_old_temporals 已删除。 系统
create_old_temporals
变量在 NDB Cluster 7.4 中已弃用,现在已被删除。ndb_mgm 客户端提示命令。 NDB Cluster 7.5 添加了一个用于设置客户端命令行提示符的新命令。下面的例子说明了
PROMPT
命令的使用:ndb_mgm> PROMPT mgm#1: mgm#1: SHOW Cluster Configuration --------------------- [ndbd(NDB)] 4 node(s) id=5 @10.100.1.1 (mysql-5.7.40-ndb-7.5.29, Nodegroup: 0, *) id=6 @10.100.1.3 (mysql-5.7.40-ndb-7.5.29, Nodegroup: 0) id=7 @10.100.1.9 (mysql-5.7.40-ndb-7.5.29, Nodegroup: 1) id=8 @10.100.1.11 (mysql-5.7.40-ndb-7.5.29, Nodegroup: 1) [ndb_mgmd(MGM)] 1 node(s) id=50 @10.100.1.8 (mysql-5.7.40-ndb-7.5.29) [mysqld(API)] 2 node(s) id=100 @10.100.1.8 (5.7.40-ndb-7.5.29) id=101 @10.100.1.10 (5.7.40-ndb-7.5.29) mgm#1: PROMPT ndb_mgm> EXIT jon@valhaj:/usr/local/mysql/bin>
有关其他信息和示例,请参阅 第 21.6.1 节,“NDB Cluster Management Client 中的命令”。
增加了每个片段的 FIXED 列存储。 NDB Cluster 7.5 及更高版本支持列中每个数据片段最大 128 TB
FIXED
。在 NDB Cluster 7.4 及更早版本中,这是每个片段 16 GB。已弃用的参数已删除。 以下 NDB Cluster 数据节点配置参数在以前版本的 NDB Cluster 中已弃用,并在 NDB 7.5.0 中删除:
Id
:在 NDB 7.1.9 中已弃用;替换为NodeId
.NoOfDiskPagesToDiskDuringRestartTUP
,NoOfDiskPagesToDiskDuringRestartACC
: 两者都已弃用,没有任何影响;在 MySQL 5.1.6 中替换为DiskCheckpointSpeedInRestart
,它本身后来被弃用(在 NDB 7.4.1 中)并且现在也被删除。NoOfDiskPagesToDiskAfterRestartACC
,NoOfDiskPagesToDiskAfterRestartTUP
: 都被弃用了,没有任何效果;在 MySQL 5.1.6 中替换为DiskCheckpointSpeed
,它本身后来被弃用(在 NDB 7.4.1 中)并且现在也被删除。ReservedSendBufferMemory
: 已弃用,不再有任何影响。MaxNoOfIndexes
: archaic (pre-MySQL 4.1), 没有效果;早已被MaxNoOfOrderedIndexes
or 取代MaxNoOfUniqueHashIndexes
。Discless
: archaic (pre-MySQL 4.1) 的同义词,长期以来被Diskless
.
ByteOrder
NDB 7.5.0 中也删除了 陈旧且未使用的(因此之前也未记录)计算机配置参数。NDB 7.5 不支持刚刚描述的参数。现在尝试在 NDB Cluster 配置文件中使用这些参数中的任何一个都会导致错误。
DBTC 扫描增强功能。 扫描已通过减少用于 内核块
DBTC
和DBDIH
内核块 之间通信的信号数量得到改进,通过减少NDB
扫描操作的 CPU 资源使用(在某些情况下估计减少了 5%)来提高用于扫描操作的数据节点的可扩展性.此外,由于这些更改,响应时间应该会大大缩短,这有助于防止主线程过载的问题。此外,在
BACKUP
内核块中进行的扫描也得到了改进,并且比以前的版本更加高效。JSON 列支持。 NDB 7.5.2 及更高版本支持表的
JSON
列类型NDB
和 MySQL 服务器中的 JSON 函数,但要遵守一个NDB
表最多可以有 3JSON
列的限制。从任何片段副本读取;指定 hashmap 分区片段的数量。 以前,除简单读取外,所有读取都指向主片段副本。(简单读取是在读取行时锁定行的读取。)从 NDB 7.5.2 开始,可以从任何片段副本启用读取。默认情况下这是禁用的,但可以使用
ndb_read_backup
此版本中添加的系统变量为给定的 SQL 节点启用。以前,可以定义只有一种分区映射类型的表,每个节点的每个 LDM 上有一个主分区,但在 NDB 7.5.2 中,可以通过设置分区平衡来更灵活地分配分区(片段计数类型)。可能的平衡方案是每个节点一个,每个节点组一个,每个节点每个 LDM 一个,每个节点组每个 LDM 一个。
可以通过嵌入在注释 或 语句中的
PARTITION_BALANCE
选项(在 NDB 7.5.4 中重命名) 来控制单个表的此设置。使用此语法也支持表级设置。有关更多信息和示例,请参阅 第 13.1.18.9 节,“设置 NDB 注释选项”。FRAGMENT_COUNT_TYPE
NDB_TABLE
CREATE TABLE
ALTER TABLE
READ_BACKUP
在 NDB API 应用程序中,也可以使用为此目的提供的方法获取和设置表的分区平衡;有关这些的更多信息,请参阅 Table::getPartitionBalance()和 Table::setPartitionBalance()以及 Object::PartitionBalance。
作为这项工作的一部分,NDB 7.5.2 还引入了
ndb_data_node_neighbour
系统变量。这旨在用于在事务提示中为此 SQL 节点提供“附近的”数据节点。此外,在恢复表模式时, ndb_restore
--restore-meta
现在使用目标集群的默认分区,而不是使用与从中获取备份的原始集群相同数量的分区。有关更多信息和示例, 请参阅 第 21.5.24.2.2 节,“恢复到比原始节点更多的节点” 。NDB 7.5.3 进一步增强了
READ_BACKUP
: 在此版本和更高版本中,可以READ_BACKUP
在线设置给定表作为ALTER TABLE ... ALGORITHM=INPLACE ...
.线程配置改进。
ThreadConfig
NDB 7.5.2 中针对多线程数据节点 ( ndbmtd ) 配置参数 实现了许多增强功能和功能添加 ,包括对更多平台的支持。这些变化在接下来的几段中描述。FreeBSD 和 Windows 现在支持非独占 CPU 锁定,使用
cpubind
和cpuset
.cpubind_exclusive
使用此版本中引入的和cpuset_exclusive
参数, 独占 CPU 锁定现在(仅)在 Solaris 上受支持 。线程优先级现在可用,由新
thread_prio
参数控制。thread_prio
在 Linux、FreeBSD、Windows 和 Solaris 上受支持,并且因平台而有所不同。有关详细信息,请参阅 的说明ThreadConfig
。realtime
Windows 平台现在支持 该参数。大于 16 GB 的分区。 由于 NDB Cluster 数据节点使用的哈希索引实现的改进,
NDB
表的分区现在可能包含超过 16 GB 的固定列数据,并且固定列的最大分区大小现在提高到 128 TB。先前的限制是由于内核中的DBACC
块NDB
仅使用块中行的固定大小部分的 32 位引用DBTUP
,尽管对该数据的 45 位引用在DBTUP
其本身和内核中的其他地方使用外部DBACC
; 对块中处理的数据的所有此类引用DBACC
现在都使用 45 位。从 ndb_restore 打印 SQL 语句。 NDB 7.5.4 添加了 NDB Cluster 分发版提供的ndb_restore
--print-sql-log
实用程序的选项。此选项使 SQL 日志记录到. 重要提示:要使用此选项还原的每个表都必须具有明确定义的主键。stdout
RPM 包的组织。 从 NDB 7.5.4 开始,为 NDB Cluster 提供的 RPM 包的命名和组织与为 MySQL 服务器发布的包的命名和组织更加一致。所有 NDB Cluster RPM 的名称现在都以
mysql-cluster
. 现在使用data-node
包安装数据节点;管理节点现在从management-server
包中安装;和 SQL 节点需要server
和common
包。MySQL 和NDB
客户端程序,包括 mysql客户端和 ndb_mgm管理客户端,现在包含在client
转速。有关 NDB Cluster RPM 和其他信息的详细列表,请参阅 第 21.3.1.2 节,“从 RPM 安装 NDB Cluster”。
ndbinfo 进程和 config_nodes 表。 NDB 7.5.7 在
ndbinfo
信息库中增加了两个表,提供集群节点的信息;这些表列在这里:config_nodes
:此表提供 NDB 集群配置文件中列出的每个节点的节点 ID、进程类型和主机名。processes
显示有关当前连接到集群的节点 的信息;此信息包括进程名称和系统进程 ID;对于每个数据节点和SQL节点,它还显示节点的天使进程的进程ID。此外,该表显示了每个连接节点的服务地址;这个地址可以使用Ndb_cluster_connection::set_service_uri()
方法在 NDB API 应用程序中设置,这也是在 NDB 7.5.7 中添加的。
系统名称。 NDB 集群的系统名称可用于标识特定集群。从 NDB 7.5.7 开始,MySQL 服务器将此名称显示为
Ndb_system_name
状态变量的值;NDB API 应用程序可以使用Ndb_cluster_connection::get_system_name()
在同一版本中添加的方法。自动生成基于管理服务器启动时间的系统名称;
[system]
在启动管理服务器之前,您可以通过向集群的配置文件添加一个部分并将Name
参数设置为您在该部分中选择的值 来覆盖此值。ndb_restore 选项。 从 NDB 7.5.13 开始, 调用ndb_restore时都需要
--nodeid
和 选项。--backupid
ndb_blob_tool 增强功能。 从 NDB 7.5.18 开始, ndb_blob_tool实用程序可以检测存在内联部分的缺失 blob 部分,并将其替换为长度正确的占位符 blob 部分(由空格字符组成)。要检查是否缺少 blob 部分,请使用
--check-missing
此程序的选项。要用占位符替换任何缺失的 blob 部分,请使用该--add-missing
选项。有关详细信息,请参阅 第 21.5.6 节,“ndb_blob_tool - 检查和修复导航台集群表的 BLOB 和 TEXT 列”。
--ndb-log-fail-terminate 选项。 从 NDB 7.5.18 开始,您可以在 SQL 节点无法完全记录所有行事件时终止它。这可以通过 使用 选项 启动mysqld来完成。
--ndb-log-fail-terminate
NDB 程序 - NDBT 依赖项删除。
NDB
许多实用程序对库 的依赖性NDBT
已被删除。该库内部用于开发,正常使用不需要;它包含在这些程序中可能会在测试时导致不必要的问题。此处列出了受影响的程序,以及
NDB
删除了依赖项的版本:ndb_restore,在 NDB 7.5.15 中
ndb_show_tables,在 NDB 7.5.18 中
ndb_waiter,在 NDB 7.5.18 中
此更改对用户的主要影响是这些程序在运行完成后不再打印。依赖于此类行为的应用程序应更新以反映升级到指定版本时的更改。
NDBT_ProgramExit -
status
自动安装程序弃用和删除。 MySQL NDB Cluster Auto-Installer 基于 Web 的安装工具 ( ndb_setup.py ) 在 NDB 7.5.20 中已弃用,并在 NDB 7.5.21 及更高版本中删除。它不再受支持。
ndbmemcache 弃用和删除。
ndbmemcache
不再受支持。ndbmemcache
在 NDB 7.5.20 中已弃用,并在 NDB 7.5.21 中删除。移除了 Node.js 支持。 从 NDB Cluster 7.5.20 版本开始,NDB 7.5 对 Node.js 的支持已被删除。
NDB Cluster 对 Node.js 的支持仅在 NDB 8.0 中得到维护。
还原操作期间 NULL 和 NOT NULL 之间的转换。 从 NDB 7.5.23 开始,ndb_restore
NULL
可以使用此处列出的选项支持按原样NOT NULL
和反向 恢复列:要将
NULL
列恢复为NOT NULL
,请使用该--lossy-conversions
选项。最初声明为的列
NULL
不得包含任何NULL
行;如果是这样, ndb_restore退出并出错。要将
NOT NULL
列恢复为NULL
,请使用该--promote-attributes
选项。
有关详细信息,请参阅指示的 ndb_restore选项的描述。
从 NDB 7.5.7 开始不再支持 ClusterJPA;它的源代码和二进制文件已从 NDB Cluster 发行版中删除。
MySQL Cluster Manager 还支持 NDB Cluster 7.5,它提供了一个高级命令行界面,可以简化许多复杂的 NDB Cluster 管理任务。有关详细信息,请参阅MySQL Cluster Manager 1.4.8 用户手册。