以下部分描述的变化实现MySQL NDB NDB集群的集群通过8.0.24 8.0,比早些时候发布系列。NDB集群8.0可作为一般可用性(GA)释放,NDB 8.0.19开始。NDB集群7.6和7.5之前的GA版本仍然支持生产;7.6信息NDB集群,看到新的NDB集群中的7.6是什么。7.5 NDB集群类似的信息,请参阅新的NDB集群中的7.5是什么。NDB集群7.4和7.3之前的GA版本仍然支持在生产中,虽然我们建议新的生产使用NDB集群部署8.0;看到MySQL 7.3和7.4 NDB集群NDB集群。
新的NDB集群中的8.0是什么
重大变化和NDB集群8.0中的新特性可能感兴趣的是下面的列表所示:
兼容性增强。以下更改减少长期不必要的差异
NDB
行为比其他MySQL存储引擎:与MySQL服务器并行发展。从这个版本开始,MySQL NDB集群正在开发与标准MySQL 8.0服务器在一个新的统一的释放模型具有以下特点:
NDB 8.0开发的,由使用MySQL 8.0发布的源代码树。
NDB集群8.0版本的编号方案遵循方案MySQL 8.0,从8.0.13版本。
建筑源
NDB
支持附加集群
返回的版本字符串mysql- v
,如下所示:壳牌≫mysql - v mysql版本为Linux 8.0.24-cluster x86_64(源分布)
NDB
二进制文件继续MySQL服务器版本和显示NDB
引擎的版本,是这样的:壳> ndb_mgm - v MySQL distrib mysql-8.0.24 ndb-8.0.24, Linux (x86_64)
在MySQL集群NDB 8.0中,这两个版本号总是相同的。
构建MySQL 8.0.13源NDB集群支持(或更高版本),使用CMake选项
-DWITH_NDBCLUSTER
。平台支持笔记。NDB 8.0使平台支持以下更改:
NDBCLUSTER
不再支持32位平台。开始NDB 8.0.21, NDB构建过程检查系统架构和中止如果不是一个64位的平台。从NDB 8.0.18开始,可以构建
NDB
从源为64位手臂
cpu。目前,这种支持是过于单一,我们不提供任何针对这个平台预编译的二进制文件。
数据库和表名。NDB 8.0.18, 63字节的限制标识符删除数据库和表。这些标识符现在可以使用64字节,至于这样的对象使用其他MySQL存储引擎。看到
生成名称外键。
NDB
(版本8.0.18后来)现在使用的模式
对于命名内部生成的外键。这类似于使用的模式tbl_name
_fk_N
InnoDB
。
模式和元数据分布和同步。NDB 8.0使用MySQL数据字典模式信息分发给SQL集群节点加入和现有SQL节点之间的同步新模式的变化。下面的列表描述了个体增强这种集成相关工作:
增强模式分布。的
NDB
模式分布协调员,负责处理模式操作和跟踪他们的进展,一直在扩展NDB 8.0.17确保资源使用模式操作期间发布的结论。以前,一些这方面的工作是由模式分布的客户;这改变了由于客户这一事实并不总是都需要的状态信息,这可能导致资源泄漏,当客户端决定放弃模式操作完成之前并没有通知协调员。为了帮助解决这个问题,模式操作超时检测已经从分销客户协调,为协调器提供一个机会来清理任何资源中使用模式操作。现在的协调员定期检查正在进行的模式操作超时,并标志着参与者尚未完成给定模式操作,当检测超时失败。它还提供了合适的警告当模式操作超时。(需要注意的是,这样一个超时检测后,该模式操作本身仍在继续。)额外的报告是通过定期打印活动模式的列表操作时的一个或多个这些操作正在进行。
作为一个额外的工作的一部分,一个新的mysqld选项
——ndb-schema-dist-timeout
可以设置的时间等到模式操作标记为超时。磁盘数据文件分布。从集群NDB 8.0.14开始,
NDB
使用MySQL数据字典来确保磁盘数据文件和表空间等相关构造和日志文件组是正确的所有SQL连接节点之间的分布。表空间对象的模式同步。当一个MySQL服务器连接作为NDB SQL节点集群,它检查其数据字典中发现的信息
NDB
字典。以前,唯一
NDB
对象同步的新SQL的连接节点数据库和表;MySQL集群NDB 8.0.14后来也实现模式的同步磁盘数据对象包括表空间和日志文件组。其他的好处,这可以消除的可能性MySQL数据字典和之间的不匹配NDB
字典后本地备份和恢复,恢复表空间和日志文件组NDB
字典,而不是MySQL服务器的数据字典。它也不再可能的问题
创建表
声明,指的是一个不存在的表空间。这样的声明现在失败的错误。数据库的DDL同步增强。工作在NDB 8.0.17确保同步数据库的新加入或重新加入现有SQL SQL节点与节点现在正确使用数据字典,这样任何数据库级的操作(
创建数据库
,修改数据库
,或删除数据库
这个SQL节点),可能是小姐现在正确地复制时它连接(或重新连接时)集群。作为模式的一部分,同步过程开始时,执行一个SQL节点现在比较所有数据库集群的数据节点上与自己的数据字典,如果发现这些失踪的SQL节点的数据字典,SQL节点安装在本地执行
创建数据库
声明。因此使用默认创建一个数据库MySQL服务器数据库属性(如所决定的character_set_database
和collation_database
),实际上这个SQL节点上执行该语句。NDB元数据变化检测和同步。NDB 8.0.16实现一个新的元数据更新机制来检测数据对象,如表、表空间和日志文件组与MySQL数据字典。这是通过使用一个线程,
NDB
元数据变化监控线程,在后台运行并定期检查之间的矛盾NDB
字典和MySQL数据字典。监控执行元数据检查默认每60秒。轮询间隔可以调节设置的值
ndb_metadata_check_interval
系统变量;可以完全禁用通过设置轮询ndb_metadata_check
系统变量从
。一个状态变量(NDB 8.0.16还增加了)Ndb_metadata_detected_count
显示的次数mysqld去年开始,发现不一致。在版本8.0.18开始,
NDB
确保NDB
表、日志文件组和表空间对象元数据提交的更改监控线程在操作启动后会自动检查不匹配和同步的NDB
binlog线程。NDB 8.0.18还增加了两个状态变量相关的自动同步:
Ndb_metadata_synced_count
显示对象的数量自动同步;Ndb_metadata_excluded_count
显示对象的同步失败的数量(NDB 8.0.22之前,这个变量命名Ndb_metadata_blacklist_size
)。此外,你可以看到哪些对象被检查集群同步日志。NDB 8.0.19进一步增强了该功能通过添加数据库的对象检测和同步变化。只有实际使用的数据库
NDB
表处理;可能存在的其他数据库MySQL数据字典被忽略。这就消除了先前的要求,当一个表中存在的情况NDB
但表和数据库towhich是SQL节点上并不存在,手动创建此数据库;现在在这种情况下,数据库NDB
表属于它应该创建SQL自动节点。NDB 8.0.19也介绍了
ndb_metadata_sync
系统变量;设置这个变量真正的
覆盖了的任何设置ndb_metadata_check_interval
和ndb_metadata_check
,导致改变监控线程开始低元数据变化检测。在NDB 8.0.22,后来,设置
ndb_metadata_sync
来真正的
清除的对象列表,同步失败以前,这意味着它不再需要发现单个表或通过重新连接SQL re-trigger同步节点集群。此外,设置这个变量假
清除列表对象等待重试。从NDB 8.0.21开始,更详细的信息的当前状态自动同步比可以从日志消息获得或状态变量是由两个新表添加到MySQL性能模式。这里列出的表:
ndb_sync_pending_objects
:包含关于数据库对象的信息之间的不匹配被发现NDB
字典和MySQL数据字典(没有被排除在自动同步)。ndb_sync_excluded_objects
:包含的信息NDB
数据库对象已被排除,因为他们之间不能同步NDB
字典和MySQL数据字典,因此需要手动干预。
其中一个表中的一行提供了数据库对象的父模式,名称和类型。类型的对象包括模式、表空间、日志文件组,和表。(如果对象是一个日志文件组或表空间,父模式
零
)。此外,ndb_sync_excluded_objects
表显示对象被排除在外的原因。这些表存在只有
NDBCLUSTER
存储引擎支持启用。关于这些表的更多信息,请参阅NDB变化表额外的元数据。在NDB 8.0.14,后来,额外的元数据属性的
NDB
表用于存储从MySQL数据字典序列化的元数据,而不是存储表的二进制表示在之前的版本中。(这是一个.frm
文件,不再使用的MySQL Server-seeNDB表中创建NDB集群8.0.14,后来与先前的NDB集群版本不兼容。以前版本中创建的表可以用于NDB 8.0.14,之后,但不能打开之后一个早期版本。此元数据访问使用NDB API方法
getExtraMetadata ()
和setExtraMetadata ()
NDB 8.0.13中实现。有关更多信息,请参见
动态更新的表使用.frm文件。表中创建NDB 7.6和更早的包含元数据的形式压缩
.frm
文件,它不再是支持MySQL 8.0。为了方便在线升级NDB 8.0,NDB
执行动态翻译此元数据并将其写入MySQL服务器的数据字典,这使mysqldNDB集群中的8.0与表的表没有防止后续使用之前版本的NDB
软件。重要的一旦修改表的结构在NDB 8.0中,其元数据存储使用数据字典,它不再可以访问NDB 7.6和更早。
此增强功能还可以恢复的
NDB
使用早期版本备份到一个集群运行NDB 8.0(或更高版本)。元数据一致性检查错误日志。以前做的工作在NDB 8.0中,元数据检查执行的一部分auto-synchronization之间的表示
NDB
表NDB字典及其对应的MySQL数据字典包括表的名称,存储引擎,和内部ID。从NDB 8.0.23开始,属性检查的范围扩大到包括以下数据对象的属性:列
索引
外键
此外,任何元数据属性不匹配的细节现在MySQL服务器错误日志写的。用于错误日志消息的格式略有不同取决于差异被发现在表级别或一列,索引,或外键。记录错误造成的表格的格式属性不匹配所示,
财产
是属性名,ndb_value
属性值是存储在NDB字典,然后呢mysqld_value
属性的值是存储在MySQL数据字典:差异的财产“发现”,ndb_value“! =”mysqld_value”
属性不匹配的列、索引和外键,格式如下,
obj_type
是其中之一列
,指数
,或外键
,obj_name
是对象的名称:差异在obj_type”obj_name。财产“发现”,ndb_value“! =”mysqld_value”
元数据检查期间执行自动的同步
NDB
时表安装在任何的数据字典mysqld作为一个SQL节点NDB集群。如果mysqld是debug-compiled,检查时也做吗创建表
执行语句,每当一个NDB
表被打开。
同步与NDB_STORED_USER用户权限。一个新的机制来共享和同步用户,角色,和特权SQL节点之间可以从NDB 8.0.18开始,使用
NDB_STORED_USER
特权。分布式特权在NDB 7.6和更早的实现分布式特权使用共享授权表不再支持。一旦一个SQL节点上创建一个用户帐户,可以存储在用户及其权限
NDB
因此在集群中的所有SQL节点之间共享通过发行格兰特
这样的语句:格兰特NDB_STORED_USER *。*“乔”@“localhost”;
NDB_STORED_USER
总是有全球范围和必须被使用* *。
。系统保留账户等mysql.session@localhost
或mysql.infoschema@localhost
不能被分配这个特权。角色也可以通过发出适当的SQL节点之间共享
格兰特NDB_STORED_USER
声明。这样的角色分配给一个用户不会引起用户共享;的NDB_STORED_USER
特权必须显式授予每个用户。一个用户或角色
NDB_STORED_USER
连同其特权,与所有SQL共享节点一旦他们加入一个给定NDB集群。修改用户的权限或角色与所有SQL连接节点立即同步。可以使这些变化从任何连接SQL节点,但推荐的做法是只从一个指定的SQL节点,因为从不同的SQL语句的执行顺序影响特权节点不能保证是相同的所有SQL节点上。对升级的影响。由于MySQL服务器的权限系统的变化(见NDB存储引擎函数不正确NDB 8.0。它是安全的,但没有必要保留这样的特权NDB 7.6或更早的版本中创建的表,但他们不再是用于访问控制。从NDB 8.0.16开始,mysqld作为一个SQL节点和检测这样的表
NDB
写一个警告的MySQL服务器日志,并创建InnoDB
影子表当地本身;这样的影子表上创建每个MySQL服务器连接到集群。当执行升级从NDB 7.6或更早,特权表使用NDB
可以删除安全地使用吗ndb_drop_table一旦所有MySQL服务器已经升级(见作为SQL节点ndb_restore公用事业公司——restore-privilege-tables
选择弃用,但仍然是荣幸在NDB 8.0中,仍然可以使用恢复分布式特权表出现在先前版本的备份NDB集群的集群运行NDB 8.0。这些表是本条上款所描述的处理。用户和赠款存储在共享
ndb_sql_metadata
表,NDB 8.0.19,以后ndb_restore在默认情况下不会恢复;您可以指定——include-stored-grants
选择因为它这样做。INFORMATION_SCHEMA变化。以下显示的更改磁盘数据文件的信息
INFORMATION_SCHEMA.FILES
表:表空间和日志文件组不再代表的
文件
表。(这些构造不是实际文件。)现在每个数据文件是由单个行
文件
表。现在每个undo日志文件也只在这个表的代表一行。(以前,一行显示为每个复制每个文件的每个数据节点上)。
此外,
INFORMATION_SCHEMA
现在表填充MySQL集群表的表空间数据。(错误# 27167728)与ndb_perror错误信息。弃用的
——ndb
选择perror被移除。相反,使用ndb_perror获得错误消息的信息NDB
错误代码。错误# 81705(错误# 81704年,错误# 23523926,错误# 23523957)条件叠加增强。以前,条件谓词下推仅限于条款指从相同的表列值的条件被推。NDB 8.0.16,这个限制被移除,这样较早从表列值的查询计划也可以称为条件。NDB 8.0.18,支持连接比较列表达式,比较在相同的表列。列和列表达式比较必须完全相同的类型;这意味着他们必须signedness相同,长度、字符集、精度、应用和规模,每当这些属性。
压低较大的部分条件允许更多的行过滤掉的数据节点,从而降低它的行数mysqld在加入处理期间必须处理。这些增强的另一个好处是,过滤的LDM可以并行执行的线程,而不是在单个mysqld过程在一个SQL节点;这有可能显著提高查询性能。
现有的规则类型之间的兼容性列值比较(见继续适用
Antijoins MySQL产生的优化器通过转换
不存在
和不是在
查询(见NDB。可以当没有unpushed条件放在桌子上,和查询满足其他条件必须满足外连接的下推。
NDB
试图识别和评估non-dependent标量子查询之前试图从表中检索任何行它。可以这样做时,获得的值用作推动条件的一部分,而不是使用子查询提供值。
最大行大小的增加。NDB 8.0.18增加的最大字节数,可以存储在一个NDBCLUSTER
表从14000年到30000字节。
固定宽度的最大偏移量的列NDB
表是8188个字节;这也是从8.0.18之前版本不变。
看到 ndb_mgm显示命令和单用户模式。从NDB 8.0.17开始,当集群在单用户模式下,管理的输出端显示
命令指示该API或SQL节点在这种模式实际上是独占访问。
网上列重命名。从NDB 8.0.18开始,列的 改善ndb_mgmd启动时间。开始时间管理节点守护进程在NDB 8.0.18,显著提高后,在以下方面: 由于取代以前用数据结构列表 此外,在这种情况下,数据和SQL节点管理服务器的主机名不存在NDB
在线重命名表,使用算法=原地
。看到
ndb_mgmd
处理节点属性的配置数据的哈希表,整体管理服务器的启动时间已经下降了6倍或更多。主机
文件用于集群配置文件,ndb_mgmd开始时间可以比以前短20倍。
NDB API增强。从NDB 8.0.18开始,NdbScanFilter: cmp ()
和几个比较的方法NdbInterpretedCode
可以用来比较表列值。受影响的NdbInterpretedCode
这里列出的方法是:
刚刚上市的所有方法,表列值比较多是完全匹配的类型,包括对长度、精度、signedness,规模、字符集和校对,适用。
看个人的描述API方法的更多信息。
离线多线程构建索引。现在可以指定一组内核用于I / O的线程执行离线多线程构建有序的索引,而不是正常的I / O文件I / O等职责,压缩或解压缩。”离线”在这种情况下是指执行的命令索引构建当父表没有被写入;这样的建筑发生当一个NDB
集群执行节点或系统重启,或者使用从备份恢复一个集群的一部分ndb_restore——rebuild-indexes
。
此外,离线索引构建的默认行为修改使用所有可用的核心工作ndbmtd,而限制自己核心的I / O的线程。这样做可以提高重启和恢复时间和性能、可用性和用户体验。
此增强功能实现如下:
的默认值
BuildIndexThreads
改变从0到128。这意味着离线命令默认索引构建现在多线程。的默认值
TwoPassInitialNodeRestartCopy
改变从假
来真正的
。这意味着一个初始节点重启首先副本的数据”生活”节点是开始时创建任何indexes-builds命令索引离线,然后再次同步数据和现场节点,也就是说,同步两次,两国synchonizations离线建立索引。这将导致一个初始节点重启的行为更像一个节点的正常重启,并减少所需的时间来建立索引。一个新线程类型(
idxbld
)的定义ThreadConfig
配置参数,允许离线索引构建线程锁定特定的cpu。
此外,NDB
现在不同的线程访问的类型ThreadConfig
由这两个标准:
是否一个执行线程的线程。线程的类型
主要
,ldm
,recv
,代表
,tc
,发送
执行线程;线程类型io
,监管机构
,idxbld
不是。分配的线程是否一个给定的任务是永久或暂时的。目前所有线程类型除了
idxbld
是永久性的。
有关更多信息,请参见手动指定参数的描述。(错误# 25835748,错误# 26928111)
logbuffers表备份过程信息。当执行一个NDB备份时,ndbinfo.logbuffers
现在显示表信息缓冲区使用的备份过程在每个数据节点上。这是实现为行除了反映出两个新的日志类型重做
和DD-UNDO
。这些行之一的日志类型备份数据
,显示缓冲期间使用备份的数据量片段复制到备份文件。另一行日志类型日志备份
,它显示日志缓冲区的用量在备份后记录更改备份已经开始。一个每一个log_type
行所示logbuffers
表中的每个数据节点集群。行中有这两种日志类型表只有当一个NDB备份现在正在进展中。(错误# 25822988)
ndbinfo。在Windows上流程表。监控过程的进程ID在Windows平台上使用重新启动
产卵并重启mysqld现在所示流程
表作为一个angel_pid
。
字符串哈希的改进。NDB 8.0之前,所有字符串哈希是基于第一个将字符串转换为规范化的形式,然后使用md5哈希结果二进制图像。这可能会导致一些性能问题,原因如下:
规范化字符串总是空间填充完整。对于一个
VARCHAR
,这往往涉及添加更多的空间比原来有字符字符串。的字符串库没有优化的空间填充,这在某些用例中添加相当大的开销。
字符集之间填充语义不同,其中一些没有填充完整。
转换后的字符串可能会相当大,即使没有空间填充;一些可以将一个代码点转换为Unicode 9.0排序100字节或更多的字符数据。
随后MD5散列主要包括填充的空间,并不是特别有效,可能导致额外的性能损失的冲洗L1缓存的重要部分。
排序提供了自己的哈希函数,散列字符串直接首先创建一个规范化字符串。此外,对于Unicode 9.0排序,计算散列没有填充。NDB
现在利用内置函数当哈希字符串标识为使用Unicode 9.0排序。
以来,为其他针对性,有现有的数据库是散列分区转换后的字符串,NDB
继续使用之前的方法使用这些哈希字符串,保持兼容性。错误# 89604(错误# 89590年,错误# 89609,错误# 27515000,错误# 27523758,错误# 27522732)
重置主人变化。因为现在的MySQL服务器执行重置的主人
全球读锁,这句话在使用NDB集群的行为改变了在以下两个方面:
它不再是保证synonchrous;是,现在可以读之前立即到来
重置的主人
可能没有记录,直到发出二进制日志一直旋转。现在的行为以完全相同的方式,无论是声明写在同一个SQL节点发出的二进制日志,或在一个不同的SQL节点在同一集群。
显示BINLOG的事件
,刷新日志
,大多数数据定义语句继续像以前那样NDB
版本,以同步的方式运作。
ndb_restore选择使用。从NDB 8.0.16开始,——nodeid
和——backupid
选项调用时都是必需的ndb_restore。
ndb_log_bin违约。从NDB 8.0.16开始,默认值的ndb_log_bin
系统变量已经改变了真正的
来假
。
动态事务资源分配。在事务corrdinator(见资源配置DBTC块)现在使用动态内存池。这意味着资源配置等数据节点配置参数决定MaxDMLOperationsPerTransaction
,MaxNoOfConcurrentIndexOperations
,MaxNoOfConcurrentOperations
,MaxNoOfConcurrentScans
,MaxNoOfConcurrentTransactions
,MaxNoOfFiredTriggers
,MaxNoOfLocalScans
,TransactionBufferMemory
现在做的这样一种方式,如果负载由这些参数是在目标负载等所有资源,其他这些资源是有限的,不能超过总可用资源。
作为这项工作的一部分,一些新的数据节点参数控制事务性资源DBTC
列在这里,说:
看到列出的参数只作进一步的描述信息。
每个数据节点备份使用多个ldm。NDB
备份现在可以以并行方式执行单个数据节点上使用多个本地数据管理器(ldm)。(之前,备份在数据节点上并行完成,但总是串行数据节点流程内。)不需要特殊的语法开始备份
命令的ndb_mgm客户端启用这个特性,但是所有数据节点必须使用多个ldm。这意味着数据节点都必须运行ndbmtd(ndbd是单线程的,因此总是只有一个LDM),他们必须配置为使用多个LDM之前备份;你可以通过选择一个适当的设置一个多线程的数据节点配置参数MaxNoOfExecutionThreads
或ThreadConfig
。
备份使用多个LDM创建子目录,每一个LDM,下 二进制配置文件增强。从NDB 8.0.18开始,一个新的格式是用于管理服务器的二进制配置文件。以前,最多16381部分可以出现在集群配置文件;现在部分的最大数量是4 g。这是为了支持大量的节点比以前在一个集群中这种变化。 相对无缝升级到新的格式,几乎从来不需要手动干预,随着管理服务器继续能够读旧的格式没有问题。降级从NDB 8.0.18(或更高版本)到一个旧版本的NDB集群软件需要手动删除任何二进制配置文件或,或者,从旧的管理服务器二进制的 有关更多信息,请参见 增加数据节点的数量。NDB 8.0.18每个集群的最大支持的数据节点数量增加到144(以前,这是48)。数据节点现在可以使用节点id在1到144的范围内,包容性。 以前,管理节点的推荐节点id是49岁和50。这些仍然支持管理节点,但使用它们作为这样的数据节点的最大数量限制为142;由于这个原因,现在建议节点id 145年和146年被用于管理节点。 作为这项工作的一部分,用于数据节点的格式备份/备份-
目录中。ndb_restore现在自动检测这些子目录,如果他们存在,试图恢复备份并行;看到NDB)。还可以恢复备份并行使用ndb_restore前一个版本的二进制NDB集群通过修改通常恢复过程;backup_id
/——初始
选择。sysfile
已经更新到版本2。这个文件记录信息,如过去的全球检查点指数,重启状态和节点每个节点(参见的组成员关系NDB集群数据节点文件系统目录)。
RedoOverCommitCounter和RedoOverCommitLimit变化。由于歧义的语义为它们设置为0,最小值为每个数据节点的配置参数RedoOverCommitCounter
和RedoOverCommitLimit
已经增加到1,NDB 8.0.19开始。
ndb_autoincrement_prefetch_sz变化。NDB 8.0.19的缺省值ndb_autoincrement_prefetch_sz
服务器系统变量增加到512。
改变参数maxmimums和违约。NDB 8.0.19使下列配置参数的变化最大,默认值:
的最大
DataMemory
增加到16 tb。的最大
DiskPageBufferMemory
也增加到16 tb。的默认值
StringMemory
增加到25%。的默认值
LcpScanProgressTimeout
是增加到180秒。
磁盘数据检查点的改进。NDB集群8.0.19提供了许多新的增强有助于减少延迟的检查点的磁盘数据表和表空间在使用非易失性存储设备如固态硬盘和NVMe规范等设备。这些改进包括以下列表:
避免的检查点磁盘写
加快检查站磁盘数据表空间当重做日志或undo日志变得完整
平衡检查点对另一个磁盘和内存中的检查点,在必要的时候
从过载保护磁盘设备,以确保在高负载下低延迟
作为这项工作的一部分,NDB 8.0.19引入了两个新的数据节点配置参数。MaxDiskDataLatency
地方允许上限的延迟磁盘访问,导致交易比这个时间长点的时间长度将中止。DiskDataUsingSameDisk
可以利用住房磁盘数据表空间在单独的磁盘上增加的速率可以执行检查点的表空间。
此外,三个新表ndbinfo
数据库,还增加了在NDB 8.0.19,列在这里,提供信息的磁盘数据性能:
的
diskstat
表报告磁盘上写入数据表空间在过去的
diskstats_1sec
表报告磁盘上写入数据表空间的最后20秒的
pgman_time_track_stats
表报告延迟有关磁盘的磁盘操作数据表空间
内存分配和TransactionMemory。NDB 8.0.19引入了一个新的TransactionMemory
参数,简化了数据节点分配内存事务的一部分工作池事务和本地数据管理器(LDM)内存。这个参数是为了取代几个年长的事务内存参数已被弃用。
事务内存现在可以设置在任何列出的三种方式:
一些配置参数是不相容的
TransactionMemory
。如果这些设置,TransactionMemory
不能设置(见请注意试图设置
TransactionMemory
和任何的这些参数同时config.ini
文件开始阻止管理服务器。
如果TransactionMemory
设置,该值用于确定事务的记忆。TransactionMemory
不能设置如果任何不兼容的参数在前面提到的项目也被设置。
如果没有一个不兼容的参数设置和TransactionMemory
还没有设置,事务内存设置NDB
。
有关更多信息,请参见的描述 支持附加片段副本。NDB 8.0.19增加的最大数量从两到四个片段支持生产复制品。(之前,它是可能的 恢复的片。NDB 8.0.20开始,可以把备份分成大致相等的部分(片)和恢复这些片并联使用两个新选项的实现ndb_restore: 这使得它可以使用的多个实例ndb_restore并行恢复备份的子集,可能会减少所需的时间来执行恢复操作。 有关更多信息,请参见的描述ndb_restore 从任何读取片段复制启用。从NDB 8.0.19开始,读取任何片段复制在缺省情况下是启用的 有关更多信息,请参见的描述 ndb_blob_tool增强。从NDB 8.0.20开始,ndb_blob_tool实用程序可以检测到缺少blob部分的内联部分存在,这些替换占位符blob部分(包含空格字符)正确的长度。检查是否有丢失的blob部分,使用 有关更多信息,请参见 ndbinfo版本控制。 对Fedora Linux的支持。开始NDB 8.0.20, Fedora Linux是一个支持平台NDB集群社区版本,可以使用rpm安装为此提供了甲骨文。这些都可以获得的10bet博彩公司
。 NDB programs-NDBT依赖移除。大量的依赖 影响项目列在这里,一起 ndb_restore在NDB 8.0.17 ndb_delete_all在NDB 8.0.18 ndb_show_tables在NDB 8.0.20 ndb_waiter在NDB 8.0.20 对用户来说,这一变化的主要影响的是这些项目不再打印 叠加的外部连接和semijoins。工作在NDB 8.0.20允许许多外部连接和semijoins,不仅那些使用一个主键或唯一键查找,下推到数据节点(参见
桌子上没有unpushed条件 没有unpushed条件对其他表在同一加入巢,或在上部加入它依赖的巢穴 所有其他表在同一个加入巢,或在上部加入它依赖的巢穴,也推TransactionMemory
,以及NoOfReplicas
3或4,但这并非官方支持或验证测试。)
——num-slices
确定备份的片的数量应该划分。——slice-id
提供的ID的当前实例恢复ndb_restore。——num-slices
选择。NDB
表。这意味着默认值ndb_read_backup
现在系统变量,的值NDB_TABLE
评论选项READ_BACKUP
当创建一个新的吗NDB
表。使读取任何片段副本读取的极大地提高了性能NDB
表,以最小的影响写道。ndb_read_backup
系统变量,——check-missing
选择这个项目。任何缺失的blob部分替换占位符,使用——添加缺少的
选择。NDB
8.0.20后来支持版本控制ndbinfo
表,并维护当前定义的内部表。在启动时,NDB
比较其支持ndbinfo
版本与版本存储在数据字典中。如果版本不同,NDB
滴任何旧ndbinfo
使用当前定义表和重新创建它们。NDB
实用程序的NDBT
图书馆被移除。这对于开发库内部使用,不需要正常使用;它包含这些项目可能会导致不必要的问题在测试。NDB
版本的依赖被:
NDBT_ProgramExit -
完成后运行。应用程序依赖于这样的行为应该被更新以反映变化升级到指定的版本。状态
使用索引扫描的semijoin现在可以推动符合条件的情况下,仅仅指出推外连接,和它使用firstMatch
策略(见解释
应该提供的原因或理由。
外键和文书夹。NDB
商店的名字外键使用定义它们的情况。以前,当的值lower_case_table_names
系统变量设置为0,它执行中使用的外键名称区分大小写的比较选择
和其他SQL语句和存储的名称。从NDB 8.0.20开始,这样的比较现在总是以不区分大小写的方式进行,不管的价值lower_case_table_names
。
多种转运蛋白。NDB 8.0.20介绍了支持多种转运蛋白处理节点到节点对数据节点之间的通信。这有助于更高的更新操作为集群中的每个节点组,并帮助避免限制系统或其他限制节点间通信使用一个单一的套接字。
默认情况下,NDB
现在使用的转运蛋白基于本地数据管理(LDM)线程的数量或事务协调员(TC)线程的数量,哪个更大。默认情况下,转运蛋白的数量等于这个数的一半。虽然大多数工作负载的默认应该表现良好,可以调整数量的转运蛋白受雇于通过设置每个节点组NodeGroupTransporters
数据节点配置参数(也介绍了NDB 8.0.20),最高大的LDM线程的数量或TC线程的数量。将值设置为0就可以转运蛋白的数量是相同的LDM线程的数量。
ndb_restore:主键模式变化。NDB 8.0.21(后来)支持不同的主键定义源和目标表当恢复NDB
本地备份与ndb_restore当它运行的——allow-pk-changes
选择。增加和减少的数量列支持原来的主键。
当主键被扩展与一个额外的列或列,必须定义为任何列添加非空
,没有任何这样的列中的值可能会改变在备份的时间。因为一些应用程序设置所有列值连续更新时,是否所有的值实际上是改变,这可能会导致恢复操作失败即使没有列中的值被添加到主键已经改变了。你可以使用覆盖这一行为——ignore-extended-pk-updates
在NDB 8.0.21选项还增加了;在这种情况下,您必须确保没有这样的值改变。
一列可以从表的主键删除该列是否仍表的一部分。
有关更多信息,请参见的描述——allow-pk-changes
选择ndb_restore。
与ndb_restore合并备份。在某些情况下,它可能是可取的,巩固NDB集群的数据最初存储在不同实例(所有使用相同的模式)到一个目标NDB集群。这是现在支持在使用中创建的备份ndb_mgm客户端(见ndb_restore,使用——remap-column
选择在NDB 8.0.21连同补充道——恢复数据
(可能还有额外的兼容选项根据需要或期望)。——remap-column
可以用来处理情况下,主键和外键值之间重叠的集群,它是必要的,他们不重叠的目标集群,以及保护外键等其他表之间的关系。
——remap-column
需要作为它的参数字符串的格式
,在那里db
。资源描述
。上校
:fn
:arg游戏
db
,资源描述
,上校
分别是数据库的名称,表和列,fn
是重新映射函数的名字,arg游戏
一个或多个参数吗fn
。没有默认值。只有抵消
支持函数名,arg游戏
因为整数抵消时应用于列的值插入到目标表的备份。这一列必须之一INT
或长整型数字
;偏移值的允许范围是一样的签名版本的类型(如果需要这允许偏移量为负)。
新选项可以多次使用相同的调用ndb_restore,这样你就可以重新映射到多个列新值相同的表,不同的表,或两者兼而有之。偏移值不一定是相同的所有实例的选择。
此外,提供了两个新的选择ndb_desc,也开始在NDB 8.0.21:
——auto-inc
(简式——一个
):包括下一个自动递增的价值输出,如果表有一个AUTO_INCREMENT
列。——背景
(简式- x
):提供额外的信息表,包括模式、数据库名、表名和内部ID。
的更多信息和示例,请参见的描述——remap-column
选择。
发送线程的改进。现在NDB 8.0.20,每个发送线程处理发送到转运蛋白的一个子集,每个块线程现在助攻只有一个发送线程,从而导致更多的发送线程,从而更好的性能和数据节点的可伸缩性。
自适应使用SpinMethod旋转控制。一个简单的接口设置自适应CPU旋转平台支持它,使用SpinMethod
数据节点参数。这个参数(添加到NDB 8.0.20功能开始NDB 8.0.24)有四个设置,分别为静态旋转,基于成本的适应性旋转,latency-optimized适应性旋转,旋转和自适应优化数据库机器,每个线程都有自己的CPU。这些设置会导致数据节点使用一组预先确定的值的一个或多个旋转参数启用自适应旋转,旋转时间,并设置旋转开销,适合一个给定的场景,因而无需直接设置这些常见用例。
微调旋转行为,也可以直接设置这些和其他旋转参数,使用现有的SchedulerSpinTimer
数据节点配置参数以及以下转储
命令的ndb_mgm客户:
转储104000 (SetSchedulerSpinTimerAll)
:集旋转时间所有线程转储104001 (SetSchedulerSpinTimerThread)
:集旋转时间指定的线程转储104002 (SetAllowedSpinOverhead)
:集旋转开销随着单位数量的CPU时间允许增加1单位延迟转储104003 (SetSpintimePerCall)
:设置时间叫旋转转储104004 (EnableAdaptiveSpinning)
:启用或禁用adpative旋转
NDB 8.0.20还增加了一个新的TCP配置参数TcpSpinTime
设置时间对于一个给定的TCP连接。
的ndb_top工具也增强每个线程提供旋转时间信息。
有关更多信息,请参见的描述 磁盘数据和集群重启。从NDB 8.0.21开始,一个初始启动集群的力量消除所有磁盘数据对象,如表和日志文件组,包括任何数据文件和undo日志文件与这些对象相关联。 看到 磁盘数据分配。从NDB 8.0.20开始,分配区段的数据文件中以循环的方式完成给定表空间使用的所有数据文件。这将提高数据的分布在多个存储设备的情况下用于磁盘数据存储。 有关更多信息,请参见 ——ndb-log-fail-terminate选项。从NDB 8.0.21开始,可以导致SQL节点终止时它不能记录所有行事件完全。这可以通过开始mysqld与SpinMethod
参数,上市转储
命令和——ndb-log-fail-terminate
选择。
AllowUnresolvedHostNames参数。默认情况下,一个管理节点拒绝开始的时候不能解决主机名称出现在全局配置文件,这可能会产生问题,在某些环境中,如Kubernetes。从NDB 8.0.22开始,可以通过设置覆盖这一行为AllowUnresolvedHostNames
来真正的
在(tcp违约)
集群的部分全球confugration文件(config.ini
文件)。这样做会导致这些错误被视为警告相反,和许可证ndb_mgmd继续开始
Blob写性能增强。NDB 8.0.22实现的改进,允许更有效的批处理修改同一行中的多个blob列时,或者当修改多个行包含blob列在同一语句,通过减少之间的往返一个SQL API或其他节点和数据节点时应用这些修改。许多的性能插入
,更新
,删除
语句可以因此得到改善。这样的声明的例子列在这里,表
是一个NDB
表包含一个或多个Blob列:
插入
,即插入一行包含一个或多个Blob列表
值行(1,blob_value1
,blob_value2
,……)插入
,即插入多行包含一个或多个Blob列表
值行(1,blob_value1
)、行(2blob_value2
)、行(3blob_value3
),…更新
表
集blob_column1
=blob_value1
,blob_column2
=blob_value2
,……更新
,不是一个Blob类型主键列表
集blob_column
=blob_value
在哪里primary_key_column
在(value_list
)删除从
,不是一个Blob类型主键列表
在哪里primary_key_column
=价值
删除从
,不是一个Blob类型主键列表
在哪里primary_key_column
在(value_list
)
其他SQL语句可能会受益于这些改进。这些包括数据加载INFILE
和创建表……选择……
。此外,ALTER TABLE
,在那里表
引擎= NDB表
使用以外的存储引擎NDB
之前执行的语句,也可以更有效地执行。
此增强功能适用于MySQL的语句影响列类型团
,MEDIUMBLOB
,LONGBLOB
,文本
,简单
,量变
。语句更新TINYBLOB
或非常小的文本串
列(或两种类型)只有不受这项工作的影响,并没有改变他们的性能应该是预期。
一些SQL语句的性能没有明显提高了此增强功能,因为它们需要扫描的Blob列的表,这批处理。这些语句包括这里列出的类型:
选择从
,选择行匹配一个主键或唯一键列上使用一个Blob类型表
(在哪里key_column
在(blob_value_list
)]更新
,使用表
集blob_column
=blob_value
在哪里条件
条件
这并不依赖于一个独特的价值删除从
删除行包含一个或多个Blob列,使用表
在哪里条件
条件
这并不依赖于一个独特的价值一个复制
ALTER TABLE
声明一个表已经使用了NDB
存储引擎执行语句之前,他的行包含一个或多个Blob列声明之前或之后执行(或两者)
利用改进的极致,您可能希望增加使用的值——ndb-batch-size
和——ndb-blob-write-batch-bytes
选项mysqld,减少往返需要修改blob。复制,也建议您启用slave_allow_batching
系统变量,它的数量降至最低,往返所需的复制品集群应用时代的事务。
节点。js更新。与NDB 8.0.22开始,NDB
适配器的节点。js是12.18.3使用版本,只有这个版本(或以后版本的node . js)现在支持。
加密备份。NDB 8.0.22添加支持备份文件使用aes - 256 - cbc加密;这是为了防止恢复的备份数据访问unathorized派对。当加密、备份数据是由用户提供的密码保护。密码可以是任何多达256个字符组成的字符串从打印的范围以外的ASCII字符!
,”
,”
,美元
,%
,\
,^
。保留密码用于加密任何给定NDB集群必须由用户或应用程序执行的备份;NDB
不保存密码。密码可以是空的,尽管这是不推荐。
当把一个NDB集群备份,你可以通过使用加密加密密码=
与管理客户端密码
开始备份
命令。米高梅的用户通过调用API也可以发起一个加密备份ndb_mgm_start_backup4 ()
。
你可以加密现有备份文件使用ndbxfrm效用是添加到NDB集群分布8.0.22释放;这个程序也可以用于解密加密备份文件。此外,ndbxfrm可以压缩备份文件和解压压缩备份文件使用相同的方法,是受雇于NDB集群创建备份的时候CompressedBackup
配置参数设置为1。
从一个加密备份,恢复使用ndb_restore的选项——解密
和——备份密码
。需要两个选项,以及任何其他同样需要恢复备份如果没有加密。ndb_print_backup_file和ndbxfrm也可以读取加密的文件使用,分别- p
密码
和——decrypt-password =
。密码
在所有情况下,一个密码一起提供一个选择加密或解密,密码必须引用;您可以使用单引号或双引号分隔的密码。
从NDB 8.0.24开始,几个NDB
程序,列在这里,也支持从标准输入密码的输入,同样在登录时这是如何实现的交互mysql客户端使用——密码
在命令行选项(不包括密码):
为ndb_restore和ndb_print_backup_file,
——backup-password-from-stdin
选项允许输入的密码安全的方式,类似于它是如何做的mysql客户端”——密码
选择。为ndb_restore一起,使用选项——解密
选择;为ndb_print_backup_file,使用选择的地方- p
选择。为ndb_mgm的选项
——backup-password-from-stdin
一起支持——执行“开始备份
开始一个集群系统备份的壳。选项
)”两个ndbxfrm选项,
——encrypt-password-from-stdin
和——decrypt-password-from-stdin
,因为类似行为在使用程序备份文件进行加密或解密。
看到列出的描述项目的更多信息。
也有可能,从NDB 8.0.22开始,执行加密备份的设置RequireEncryptedBackup = 1
在(ndbd违约)
部分集群的全局配置文件。当这样做,ndb_mgm客户拒绝任何企图执行备份不加密。
从NDB 8.0.24开始,你可以事业ndb_mgm使用加密时开始用它创建一个备份——encrypt-backup
。在这种情况下,用户在调用时提示输入密码开始备份
如果没有提供。
IPv6支持。从NDB 8.0.22开始,支持IPv6地址连接管理和数据节点;这包括管理和数据节点使用SQL节点之间的连接。配置一个集群时,您可以使用数字IPv6地址,主机名解析到IPv6地址或两者兼而有之。
为IPv6解决工作,的操作平台和网络部署集群必须支持IPv6。当使用IPv4地址,主机名解析IPv6地址必须提供操作平台。
IPv4地址仍然是支持的NDB
。不建议同时使用IPv4和IPv6地址,但是可以工作在以下情况下:
当管理节点配置IPv6与IPv4地址和数据节点配置
config.ini
如果文件:它的工作原理——bind-address
不使用mgmd和数据节点开始——ndb-connectstring
管理节点的IPv4地址。当配置管理节点与IPv4与IPv6地址和数据节点配置
config.ini
:类似于其他情况下,如果工作——bind-address
不通过mgmd和数据节点开始——ndb-connectstring
管理节点的IPv6地址。
这些情况下工作,因为ndb_mgmd默认不绑定到任何IP地址。
执行升级的版本NDB
不支持IPv6地址,,提供网络支持IPv4和IPv6,首先执行软件升级;这已经完成之后,您可以更新中使用的IPv4地址config.ini
文件与IPv6地址。在这之后,导致配置更改生效,使集群开始使用IPv6地址,必须执行一个集群的系统重新启动。
Auto-Installer弃用和删除。MySQL集群NDB Auto-Installer网络安装工具(ndb_setup.py)是在NDB 8.0.22弃用,是NDB 8.0.23,之后删除。不再支持。
ndbmemcache弃用和删除。ndbmemcache
不再支持。ndbmemcache
在NDB 8.0.22被弃用,并在NDB 8.0.23移除。
ndbinfo backup_id表。NDB 8.0.24添加一个backup_id
表ndbinfo
信息数据库。这是打算作为一个替代通过获取这些信息ndb_select_all将内部的内容SYSTAB_0
tyable,容易出错,需要过于长时间执行。
这个表有一个包含的ID列和行最近的备份集群的使用开始备份
管理客户端命令。如果没有备份的集群可以发现,表包含一行的列值0
。
表分区增强。NDB 8.0.23引入了一个新的方法来处理表分区和片段,可以确定本地数据管理人员的数量(ldm)对于一个给定的数据节点独立的重做日志的数量部分。这意味着ldm现在可以高度可变的数量。NDB
可以使用这个方法的时候吗ClassicFragmentation
数据节点配置参数,也实现NDB 8.0.23,设置为假
;在这种情况下,ldm不再是用来确定多少个分区创建表的每个数据节点,和的值PartitionsPerNode
参数(也介绍了NDB 8.0.23)决定了这个数字,也用于计算使用的碎片数量表。
当ClassicFragmentation
有它的默认值真正的
,然后使用ldm的数量的传统方法用于确定碎片的数量表。
有关更多信息,请参见新参数的描述之前,引用 术语更新。结合工作开始在MySQL 8.0.21和NDB 8.0.21 NDB 8.0.23实现一些术语的变化,这里列出: 系统变量 许多 表23.1弃用NDB状态变量及其替代品 继续被弃用状态变量的输出所示 的值 的
ndb_slave_conflict_role
现在已经弃用。取而代之的是ndb_conflict_role
。NDB
状态变量是弃用。这些变量,他们的替代品,如下表所示:显示状态
尽快,但是应用程序应该更新不再依赖他们,因为他们的可用性在未来的发行版系列是没有保证的。ADD_TABLE_MASTER
和ADD_TABLE_SLAVE
之前所示tab_copy_status
列的ndbinfo
ndbinfo.table_distribution_status
表被弃用。取而代之的是,分别值ADD_TABLE_COORDINATOR
和ADD_TABLE_PARTICIPANT
。——帮助
输出的NDB
客户端等实用程序ndb_restore已经被修改。
ThreadConfig增强。NDB 8.0.23,的可配置性ThreadConfig
参数扩展了两个新的线程类型,这里列出:
查询
:查询线程(只)工作读过承诺
查询。一个查询线程也充当一个恢复线程。查询线程的数量必须是0,1,2,或者3次LDM线程的数量。0(默认情况下,除非使用ThreadConfig
,或AutomaticThreadConfig
启用)导致ldm NDB 8.0.23之前表现一样。恢复
:恢复线程从一个当地检查站检索数据。恢复线程指定为这样从来没有作为一个查询线程。
还可以结合现有的主要
和代表
线程在两个方面:
到一个单独的线程通过设置一个参数为0。在这样做时,生成的结合线显示的名字
main_rep
在ndbinfo.threads
表。一起
recv
线程通过设置两个ldm
和tc
为0,设置recv
为1。在这种情况下,结合线程命名main_rep_recv
。
此外,现有线程类型的最大数量的大量增加。新的最大值,包括查询和恢复线程,线程在这里列出:
LDM: 332
查询:332
复苏:332
TC: 128
收到:64
发送:64
主要:2
最大值为其他线程类型不变。
有关更多信息,请参见的描述ThreadConfig
参数和ndbinfo.threads
表。
同时,由于这个任务,相关工作NDB
现在雇佣了互斥锁来保护工作缓冲区使用超过32块时线程。虽然这可能会导致轻微下降,性能(在大多数情况下1 - 2%),这也大大减少了所需的内存非常大的配置。例如,设置64个线程,使用缓冲区内存2 GB的工作之前NDB 8.0.23应该只需要大约1 GB NDB 8.0.23后来。在我们的测试中,这导致了整体改善的5%的执行非常复杂的查询。
ndbmtd线程自动配置。从NDB 8.0.23开始,可以使用自动配置为多线程数据节点的线程使用ndbmtd配置参数AutomaticThreadConfig
。当这个参数设置为1时,NDB
设置线程自动作业,根据可用的处理器数量的应用程序,对所有线程支持线程类型,包括新的查询
和恢复
线程类型描述了在前面的项目。如果系统没有限制处理器的数量,你可以这样做,如果需要通过设置NumCPUs
在NDB 8.0.23(还)。否则,自动适应1024 cpu线程配置。
自动线程配置发生无论任何值集ThreadConfig
或MaxNoOfExecutionThreads
在config.ini
;这意味着没有必要设置这些参数。
此外,NDB 8.0.23实现一些新ndbinfo
信息数据库表提供信息硬件和CPU可用性,以及CPU使用率NDB
数据节点。这些表列出:
这些表是不支持的所有平台上可用NDB集群;看到他们的个人描述的更多信息。
天使的NDB数据库对象的观点。的dict_obj_tree
表,添加到ndbinfo
在NDB 8.0.24信息数据库,可以提供很多的层次结构和树状视图NDB
数据库对象,包括以下:
表和相关的索引
表空间和数据文件相关联
日志文件组和相关的undo日志文件
的更多信息和示例,请参阅 索引统计信息增强。NDB 8.0.24索引统计信息计算实现了以下改进: 以前索引统计信息收集从一个片段;这是改变了,这样的推断是扩展到更多的碎片。 算法用于非常小的表,如有很少几行,结果被丢弃,已得到改进,估计这样的表应该比以前更准确。 有关更多信息,请参见MySQL™集群管理器1.4.8用户手册为更多的信息。