本文介绍AliSQL的内核版本更新说明。

MySQL 8.0

20200430

  • 新特性
    • Binlog in Redo:通过将Binlog写入Redo Log来优化事务落盘机制,提高数据库性能。
    • Data Protect:允许定制不同的安全策略,收缩DROP和TRUNCATE操作权限,防止数据被误删。
    • 重构X-Engine引擎的行缓存代码。
  • 性能优化
    • 在操作InnoDB临时表时仅扫描脏页列表,而不是扫描整个Buffer Pool列表。
    • 兼容MySQL 5.6,将全局参数opt_readonly_trans_implicit_commit重命名为rds_disable_explicit_trans。
    • 在实例升级期间,不记录升级相关日志到审计日志。
    • 降低在X-Engine引擎表上执行DDL操作消耗的内存。
  • Bug修复
    • 修复磁盘中实际X-Engine引擎表大小与IS表中的统计信息不一致的问题。
    • 修复重新打开错误日志会导致X-Engine日志初始化的问题。

20200331

  • 新特性

    Recycle Bin:新增支持TRUNCATE TABLE命令,执行时将原始表移动到专门的recycle bin目录中,并使用相同的结构创建新表。

  • 性能优化
    • 默认关闭TCP错误的输出。
    • 提高线程池默认配置下的性能。
  • Bug修复
    • 修复因为#p分割分区文件名导致的数据库、表无效问题。
    • 修复CCL匹配时区分大小写问题,即不再区分大小写。
  • 合并官方8.0.17、8.0.18变更,详情请参见Changes in MySQL 8.0.17Changes in MySQL 8.0.18

20200229

  • 新特性
    • Performance Agent:更加便捷的性能数据统计方案。通过MySQL插件的方式,实现MySQL实例内部各项性能数据的采集与统计。
    • 在半同步模式下添加网络往返时间,并记录到性能数据。
  • 性能优化
    • 允许在只读实例上进行语句级并发控制(CCL)操作。
    • 备实例支持Outline。
    • Proxy短连接优化。
    • 优化不同CPU架构下的pause指令执行时间。
    • 添加内存表查看线程池运行情况。
  • Bug修复
    • 在低于4.9的Linux Kernel中禁用ppoll,使用poll代替。
    • 修复wrap_sm4_encrypt函数调用错误问题。
    • 修复在滚动审核日志时持有全局变量锁的问题。
    • 修复恢复不一致性检查的问题。
    • 修复io_statistics表出现错误time值的问题。
    • 修复无效压缩算法导致崩溃的问题。
    • 修复用户列与5.6不兼容的问题。

20200110

  • 新特性

    Inventory Hint:新增了三个hint, 支持SELECT、UPDATE、INSERT、DELETE 语句,快速提交/回滚事务,提高业务吞吐能力。

  • 性能优化
    • 启动实例时,先初始化Concurrency Control队列结构,再初始化Concurrency Control规则。
    • 异步清除文件时取消小文件的链接。
    • 优化Thread Pool性能。
    • 默认情况下禁用恢复不一致性检查。
    • 更改设置变量所需的权限:
      • 设置以下变量所需的权限已更改为普通用户权限:
        • auto_increment_increment
        • auto_increment_offset
        • bulk_insert_buffer_size
        • binlog_rows_query_log_events
      • 设置以下变量所需的权限已更改为超级用户或系统变量管理用户权限:
        • binlog_format
        • binlog_row_image
        • binlog_direct
        • sql_log_off
        • sql_log_bin

20191225

  • 新特性

    Recycle Bin:临时将删除的表转移到回收站,还可以设置保留的时间,方便您找回数据。

  • 性能优化
    • 提高短连接处理性能。
    • 使用专用线程为maintain user服务,避免HA失败。
    • 通过Redo刷新Binlog时出现错误会显式释放文件同步锁。
    • 删除不必要的TCP错误日志。
    • 默认情况下启用线程池。
  • Bug修复
    • 修复慢日志刷新的问题。
    • 修复锁定范围不正确的问题。
    • 修复TDE的Select函数导致的核心转储问题。

20191115

新特性

Statement Queue:针对语句的排队机制,将语句进行分桶排队,尽量把可能具有相同冲突的语句放在一个桶内排队,减少冲突的开销。

20191101

  • 新特性
    • TDE添加SM4加密算法。
    • 保护备实例信息:拥有SUPER或REPLICATION_SLAVE_ADMIN权限的用户才能插入/删除/修改表slave_master_info、slave_relay_log_info、slave_worker_info。
    • 提高自动递增键的优先级:如果表中没有主键或非空唯一键,具有自动增量的非空键将是第一候选项。
    • 对系统表和处于初始化状态线程用到的表,不进行Memory引擎到MyISAM引擎的自动转换。
    • Redo Log刷新到磁盘之前先将Binlog文件刷新到磁盘。
    • 实例被锁定时也会影响临时表。
    • 添加新的基于LSM树的事务存储引擎X-Engine。
  • 性能优化
    • Thread Pool:互斥优化。
    • Performance Insight:性能点支持线程池。
    • 参数调整:
      • primary_fast_lookup:会话参数,默认值为true。
      • thread_pool_enabled:全局参数,默认值为true。

20191015

  • 新特性
    • TDE:支持透明数据加密TDE(Transparent Data Encryption)功能,可对数据文件执行实时I/O加密和解密,数据在写入磁盘之前进行加密,从磁盘读入内存时进行解密。
    • Returning:Returning功能支持DML语句返回Resultset,同时提供了工具包(DBMS_TRANS)便于您快捷使用。
    • 强制将引擎从MyISAM或MEMORY转换为InnoDB:如果全局变量force_mysiam_to_innodbforce_memory_to_innodbON,则创建和修改表时会将表引擎从MyISAM或MEMORY转换为InnoDB。
    • 禁止非高权限账号切换主备实例。
    • 性能代理插件:收集性能数据并保存到本地格式化文本文件,采用文件轮循方式,保留最近的秒级性能数据。
    • Innodb mutex timeout configurable:可配置全局变量innodb_fatal_semaphore_wait_threshold,默认值:600。
    • 忽略索引提示错误:可配置全局变量ignore_index_hint_error,默认值:false。
    • 可关闭SSL加密功能。
    • TCP错误信息:返回TCP方向(读取、读取等待、写入等待)错误及错误代码到end_connection事件,并且输出错误信息到错误日志。
  • Bug修复
    • 支持本地AIO的Linux系统内,在触发线性预读之前会合并AIO请求。
    • 优化表/索引统计信息。
    • 如果指定了主键,则直接访问主索引。

20190915

Bug修复

修复Cmd_set_current_connection内存泄露问题。

20190816

  • 新特性
    • Thread Pool:将线程和会话分离,在拥有大量会话的同时,只需要少量线程完成活跃会话的任务即可。
    • Statement Concurrency Control:通过控制并发数应对突发的数据库请求流量、资源消耗过高的语句访问以及SQL访问模型的变化,保证MySQL实例持续稳定运行。
    • Statement Outline:利用Optimizer Hint和Index Hint让MySQL稳定执行计划。
    • Sequence Engine:简化获取序列值的复杂度。
    • Purge Large File Asynchronously:删除单个表空间时,会将表空间文件重命名为临时文件,等待异步清除进程清理临时文件。
    • Performance Insight:专注于实例负载监控、关联分析、性能调优的利器,帮助您迅速评估数据库负载,找到性能问题的源头,提升数据库的稳定性。
    • 优化实例锁状态:实例锁定状态下,可以drop或truncate表。
  • Bug修复
    • 修复文件大小计算错误的问题。
    • 修复偶尔出现的内存空闲后再次使用的问题。
    • 修复主机缓存大小为0时的崩溃问题。
    • 修复隐式主键与CTS语句的冲突问题。
    • 修复慢查询导致的slog出错问题。

20190601

  • 性能优化
    • 缩短日志表MDL范围,减少MDL阻塞的可能性。
    • 重构终止选项的代码。
  • Bug修复
    • 修复审计日志中没有记录预编译语句的问题。
    • 屏蔽无效表名的错误日志。

MySQL 5.7基础版或高可用版

20200430

  • 新特性

    Data Protect:允许定制不同的安全策略,收缩DROP和TRUNCATE操作权限,防止数据被误删。

  • 性能优化

    QueryCache中删除rwlock,并将默认哈希函数从LF_hash改为murmur3 hash。

  • Bug修复

    修复在事务隔离(可重复读级别)中命中查询缓存时的两个错误。

20200331

  • 新特性
    • Fast Query Cache:针对原生MySQL Query Cache的不足,阿里云进行重新设计和全新实现,推出RDS Query Cache,能够有效提高数据库查询性能。
    • 从percona-server 5.7移植两个MDL锁,LOCK TABLES FOR BACKUP (LTFB)和LOCK BINLOG FOR BACKUP (LBFB)。
  • 性能优化
    • 添加线程池对低版本的兼容。
    • 默认关闭TCP错误的输出。
    • 提高线程池默认配置下的性能。
  • Bug修复
    • 修复清理大文件时包含临时文件的问题。
    • 修复线程池转储线程超时的问题。
    • 修复进程上下文中IPK字段计数错误的问题。
    • 修复rds_change_user导致的pfs线程泄漏和释放问题。
  • 合并官方5.7.28变更,详情请参见GitHub

20200229

  • 新特性
    • Performance Agent:更加便捷的性能数据统计方案。通过MySQL插件的方式,实现MySQL实例内部各项性能数据的采集与统计。
    • 在半同步模式下添加网络往返时间,并记录到性能数据。
  • 性能优化
    • 优化不同CPU架构下的pause指令执行时间。
    • Proxy短连接优化。
    • 添加内存表查看线程池运行情况。
  • Bug修复
    • 修复DDL重做日志不安全的问题。
    • 修复io_statistics表出现错误time值的问题。
    • 修复更改表导致服务器崩溃的问题。
    • 修复MySQL测试用例。

20200110

性能优化

  • 异步清除文件时取消小文件的链接。
  • 优化Thread Pool性能。
  • thread_pool_enabled参数的默认值调整为OFF。

20191225

  • 新特性

    内部账户管理与防范:调整用户权限保护数据安全。

  • 性能优化
    • 提高短连接处理性能。
    • 使用专用线程为maintain user服务,避免HA失败。
    • 删除不必要的TCP错误日志。
    • 优化线程池。
  • Bug修复
    • 修复读写分离时mysqld进程崩溃问题。
    • 修复密钥环引起的核心转储问题。

20191115

Bug修复

修复主备切换后审计日志显示变量的问题。

20191101

  • 新特性
    • TDE添加SM4加密算法。
    • 如果指定了主键,则直接访问主索引。
    • 对系统表和处于初始化状态线程用到的表,不进行Memory引擎到MyISAM引擎的自动转换。
  • 性能优化
  • Bug修复
    • 在处理维护用户列表时释放锁。
    • 补充更多TCP错误信息。

20191015

  • 新特性
    • 轮换慢日志:为了在收集慢查询日志时保证零数据丢失,轮换日志表会将慢日志表的csv数据文件重命名为唯一名称并创建新文件。您可以使用show variables like '%rotate_log_table%';查看是否开启轮换慢日志。
    • 性能代理插件:收集性能数据并保存到本地格式化文本文件,采用文件轮轮循方式,保留最近的秒级性能数据。
    • 强制将引擎从MEMORY转换为InnoDB:如果全局变量rds_force_memory_to_innodbON,则创建/修改表时会将表引擎从MEMORY转换为InnoDB。
    • TDE机制优化:添加keyring-rds插件与管控系统/密钥管理服务进行交互。
    • TCP错误信息:返回TCP方向(读取、读取等待、写入等待)错误及错误代码到end_connection事件,并且输出错误信息到错误日志。
  • Bug修复

    修复DDL中的意外错误Error 1290。

20190925

参数修改

  • 将系统变量auto_generate_certs的默认值由true改为false。
  • 增加全局只读变量auto_detact_certs,默认值为false,有效值为[true | false]。 该系统变量在Server端使用OpenSSL编译时可用,用于控制Server端在启动时是否在数据目录下自动查找SSL加密证书和密钥文件,即控制是否开启Server端的证书和密钥的自动查找功能。

20190915

新特性

Thread Pool:将线程和会话分离,在拥有大量会话的同时,只需要少量线程完成活跃会话的任务即可。

20190815

  • 新特性
    • Purge Large File Asynchronously:删除单个表空间时,会将表空间文件重命名为临时文件,等待异步清除进程清理临时文件。
    • Performance Insight:专注于实例负载监控、关联分析、性能调优的利器,帮助您迅速评估数据库负载,找到性能问题的源头,提升数据库的稳定性。
    • 优化实例锁状态:实例锁定状态下,可以drop或truncate表。
  • Bug修复
    • 禁止在set rds_current_connection命令中设置rds_prepare_begin_id。
    • 允许更改已锁定用户的信息。
    • 禁止用关键字actual作为表名。
    • 修复慢日志导致时间字段溢出的问题。

20190510版本

新特性:允许在事务内创建临时表。

20190319版本

新特性:支持在handshake报文内代理设置threadID。

20190131版本

  • 升级到官方5.7.25版本。
  • 关闭内存管理功能jemalloc。
  • 修复内部变量net_lenth_size计算错误问题。

20181226版本

  • 新特性:支持动态修改binlog-row-event-max-size,加速无主键表的复制。
  • 修复Proxy实例内存申请异常的问题。

20181010版本

  • 支持隐式主键。
  • 加快无主键表的主备复制。
  • 支持Native AIO,提升I/O性能。

20180431版本

新特性:

  • 支持高可用版。
  • 支持SQL审计
  • 增强对处于快照备份状态的实例的保护。

MySQL 5.7三节点企业版

20191128

  • 新特性

    支持读写分离。

  • Bug修复
    • 修复部分场景下Follower Second_Behind_Master计算错误问题。
    • 修复表级并行复制事务重试时死锁问题。
    • 修复XA相关bug。

20191016

  • 新特性
    • 支持MySQL 5.7高可用版(本地SSD盘)升级到三节点企业版。
    • 兼容MySQL官方GTID功能,默认不开启。
    • 合并AliSQL MySQL 5.7基础版/高可用版 20190915版本及之前的自研功能。
  • Bug修复

    修复重置备实例导致binlog被关闭问题。

20190909

  • 新特性
    • 优化大事务在三节点强一致状态下的执行效率。
    • 支持从Leader/Follower进行Binlog转储。
    • 支持创建只读实例。
    • 系统表默认使用InnoDB引擎。
  • Bug修复
    • 修复Follower日志清理命令失效问题。
    • 修复参数slave_sql_verify_checksum=OFF和binlog_checksum=crc32时Slave线程异常退出问题。

20190709

新特性

  • 支持三节点功能。
  • 禁用semi-sync插件。
  • 支持表级并行复制、Writeset并行复制。
  • 支持pk_access主键查询加速。
  • 支持线程池。
  • 合并AliSQL MySQL 5.7基础版/高可用版 20190510版本及之前的自研功能。

MySQL 5.6

20200430

新特性

  • Data Protect:允许定制不同的安全策略,避免DROP和TRUNCATE操作导致数据丢失。
  • 增加存储MDL锁信息的表mdl_info。
  • 解决同时开启线程池和ic_reduce(秒杀)功能的冲突问题。

20200331

性能优化

  • 提高线程池默认配置下的性能。
  • 默认关闭TCP错误的输出。

20200229

  • 新特性

    支持Proxy读写分离功能。

  • 性能优化
    • 优化线程池功能。
    • 优化不同CPU架构下的pause指令执行时间。
  • Bug修复

    修复XA事务部分提交的问题。

20200110

  • 新特性

    Thread Pool:将线程和会话分离,在拥有大量会话的同时,只需要少量线程完成活跃会话的任务即可。

  • 性能优化

    异步清除文件时取消小文件的链接。

  • Bug修复

20191212

性能优化

删除不必要的tcp错误日志

20191115

Bug修复

修复慢日志时间戳溢出问题。

20191101

Bug修复

  • 修复刷新日志时切换慢日志的问题,仅在执行刷新慢日志时切换慢日志。
  • 修正部分显示错误。

20191015

  • 新特性
    • 轮换慢日志:为了在收集慢查询日志时保证零数据丢失,轮换日志表会将慢日志表的csv数据文件重命名为唯一名称并创建新文件。您可以使用show variables like '%rotate_log_table%';查看是否开启轮换慢日志。
    • SM4加密算法:添加新的SM4加密算法,取代旧的SM加密算法。
    • Purge Large File Asynchronously:删除单个表空间时,会将表空间文件重命名为临时文件,等待异步清除进程清理临时文件。
    • TCP错误信息:返回TCP方向(读取、读取等待、写入等待)错误及错误代码到end_connection事件,并且输出错误信息到错误日志。
    • 引入审计日志缓冲机制,提高审计日志的性能。
  • Bug修复
    • 禁用pstack,避免存在大量连接时可能导致pstack无响应。
    • 修复隐式主键与create table as select语句之间的冲突。
    • 自动清除由二进制日志创建的临时文件。

20190815

优化实例锁状态:实例锁定状态下,可以drop或truncate表。

20190130版本

修复部分可能导致系统不稳定的bug。

20181010版本

添加参数rocksdb_ddl_commit_in_the_middle(MyRocks)。如果这个参数被打开,部分DDL在执行过程中将会执行commit操作。

201806** (5.6.16)版本

新特性:slow log精度提升为微秒。

20180426(5.6.16)版本

  • 新特性:引入隐藏索引,支持将索引设置为不可见,详情请参见参考文档
  • 修复备库apply线程的bug。
  • 修复备库apply分区表更新时性能下降问题。
  • 修复TokuDB下alter table comment重建整张表问题,详情请参见参考文档
  • 修复由show slave status/show status可能触发的死锁问题。

20171205(5.6.16)版本

  • 修复OPTIMIZE TABLE和ONLINE ALTER TABLE同时执行时会触发死锁的问题。
  • 修复SEQUENCE与隐含主键冲突的问题。
  • 修复SHOW CREATE SEQUENCE问题。
  • 修复TokuDB引擎的表统计信息错误。
  • 修复并行OPTIMIZE表引入的死锁问题。
  • 修复QUERY_LOG_EVENT中记录的字符集问题。
  • 修复信号处理引起的数据库无法停止问题,详情请参见参考文档
  • 修复RESET MASTER引入的问题。
  • 修复备库陷入等待的问题。
  • 修复SHOW CREATE TABLE可能触发的进程崩溃问题。

20170927(5.6.16)版本

修复TokuDB表查询时使用错误索引问题。

20170901(5.6.16)版本

  • 新特性:
    • 升级SSL加密版本到TLS 1.2,详情请参见参考文档
    • 支持Sequence。
  • 修复NOT IN查询在特定场景下返回结果集有误的问题。

20170530 (5.6.16)版本

新特性:支持高权限账号Kill其他账号下的连接。

20170221(5.6.16)版本

新特性:支持读写分离

MySQL 5.5

20181212

修复调用系统函数gettimeofday(2) 返回值不准确的问题。该系统函数返回值为时间,常用来计算等待超时,时间不准确时会导致一些操作永不超时。