快速浏览MySQL 8.0.30
David Stokes 【hudson译】
2022年6月27号
MySQL 8.0现已推出四年多,Oracle今天发布了MySQL 8.0.30的最新季度产品,其中包含了许多错误修复和一些有趣的补充。这是我对发行说明 的一些看法,对于那些没有时间仔细阅读的人来说,斜体的评论是我的评论,只反映了我的观点。
这是一个有趣的版本,有很多错误修复,我敦促那些需要修复的人尽快升级。对于其他人,除非您正在使用Oracle云基础架构,或者某个修复的错误正在给您带来问题,否则请在空闲时进行升级。
弃用和清除
现在不推荐将replica_parallel_workers系统变量设置为0,而使用单线程设置replica_pparallel_workers=1 那么1是这个命令的新零
–skip_host_cache 服务器选项已弃用,未来版本中会删除。作为替代,使用SET GLOBAL host_cache_size=0或SET host_caache_size=0。
新东西
对于Oracle的MySQL数据库服务来说,没有主键的表是一个大问题,他们的云需要主键。服务器的早期版本添加了对不可见主键的支持,以帮助解决该问题。现在,我们得到了生成不可见主键(GIPK),它可以自动向任何没有主键的InnoDB表添加一个不可见的主键。
GIPK列定义为:
my_row_id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT INVISIBLE PRIMARY KEY
生成的主键始终命名为my_row_id;在GIPK模式打开时不能更改此项。也不能在创建新InnoDB表的CREATE TABLE语句中使用此项作为列名,除非它包含显式主键。默认情况下不启用这些GIPK。通过将sql_generate_invisible_primary_key服务器系统变量设置为ON来启用此新功能。复制不受影响,因为此设置对复制应用程序线程没有影响,因为副本永远不会为没有在源上创建主键的复制表生成主键。
GIPK只能通过使用ALTER TABLE tbl CHANGE COLUMN my_row_id SET VISIBLE和 ALTER TABLE tbl CHANGE COLUMN my_row _id SET INSIBLE来更改GIPK的可见性。GIPKs对SHOW CREATE TABLE和SHOW INDEX以及information_schema可见,但可以通过将 show_gipk_in_create_table_and_information_schema 设置为OFF来隐藏gipk。
mysqldump和mysqlpump将通过设置 –skip-generated-invisible-primary-key选项跳过GIPK。恢复时是否跳过了这些GIPK,如果没有,这将产生多少额外负载?
AWS keyring
更新的keyring_aws 插件现在可以使用最新的aws Encryption SDK for C 1.9.186版。
SQL语法注释
REVOKE有两个新选项,用于确定带问题的REVOKE语句是否会引发错误或警告。只要目标用户或角色不存在,IF EXISTS会导致REVOKE引发警告而不是错误,而IGNORE UNKNOWN USER会导致REOKE引发警告而不是错误(如果目标用户或角色未知)有很多地方都应该需要设置错误或警告之类的问题
XA事务修复
以前,当复制拓扑中的服务器节点在执行XA_PREPARE、XA COMMIT或XA ROLLBACK时意外停止时,无法保证复制恢复。当服务器节点从拓扑中丢失并重新加入时,MySQL现在使用MySQL“经典”复制或MySQL组复制在拓扑中维护一致的XA事务状态。这还意味着XA事务状态现在已传播,以便在服务器节点停止、恢复和重新加入拓扑时,节点在给定事务中执行工作时不会分离。谁不喜欢更好的交易!
##InnoDB更改 innodb_doublewrite系统变量获得两个新设置,即DETECT_ONLY和DETECT_AND_RECOVER。使用DETECT_ONLY设置,数据库页面内容不会写入双写缓冲区,恢复不会使用双写缓冲来修复不完整的页面写入。此轻量级设置仅用于检测不完整的页面写入。DETECT_AND_RECOVER设置等同于现有的ON设置。 重做日志现在具有动态配置容量的能力,可以使用innodb_redo_log_capacity系统变量在运行时设置,以增加或减少重做日志文件占用的磁盘空间总量。重做日志得到一个新家!InnoDB在数据目录的 #InnoDB_redo 目录中维护32个重做日志文件,而不是在数据目录中维护两个文件。我想知道将这32个文件移动到另一个驱动器会如何影响性能。我们真的能收回磁盘空间吗?
22.04支支持
现在支持Ubuntu 22.04。
MySQL模式
主机名和用户名列现在位于主键的开头,以避免全表扫描。mysql.db、mysql.tables_priv,mysql.columns_priv和mysql.rocs_priv这些表正重新排列,当您升级时,它们将在MySQL升级过程的第二步中进行修改。
MyISAM
myisqm_repair_threads系统变量和myisamchk–parallel-recover选项被删除 未来是InnoDB,但我对MyISAM仍有一些美好的回忆,我讨厌看到它们被剥夺了功能
Performance Schema
Performance Schema为组复制内存使用的性能监视提供了工具。要查看,请使用:
SELECT NAME, ENABLED FROM performance_schema.setup_instruments WHERE NAME LIKE'memory/group_rpl/%';