MySQL最新发布的MySQL8.4LTS,"LTS" 代表 "Long-Term Support"(长期支持),是软件行业常用的术语之一。在软件开发中,LTS 版本是指那些经过特别维护并提供长期支持的版本。通常,LTS 版本会获得更长时间的更新和安全补丁支持,以确保它们能够在较长的时间内保持稳定和可靠。
对于 MySQL 来说,发布 LTS 版本意味着这个版本将会得到更长时间的维护和支持,以满足用户的需求。MySQL 8.4 是 MySQL 的第一个 LTS 版本,意味着它将获得更长时间的更新和安全补丁支持,以及可能的修复和改进,为用户提供更稳定和可靠的数据库服务。LTS 版本的发布通常会吸引更多企业级用户,因为他们更倾向于使用长期支持版本来确保系统的稳定性和可靠性。
MySQL 本机密码身份验证更改
开启:
从 MySQL 8.4.0 开始,已弃用的身份验证,默认情况下,插件不再启用。要启用它,需要再启动时添加--mysql-native-password=ON,或在配置文件添加
代码语言:javascript复制[mysqld]
mysql_native_passwordmysql_native_password=ON
禁用:
再启动时不添加--mysql-native-password参数,或在配置文件添加
代码语言:javascript复制[mysqld]
mysql_native_passwordmysql_native_password=OFF
InnoDB 系统变量默认值更改
innodb_buffer_pool_in_core_file
MySQL 8.4 | MySQL 8.0 |
---|---|
OFF 如果支持, 否则MADV_DONTDUMPON | ON |
innodb_buffer_pool_instances
MySQL 8.4 |
---|
如果innodb_buffer_pool_size <= 1 GiB,则 innodb_buffer_pool_instances=1如果innodb_buffer_pool_size > 1 GiB,则这是 以下两个计算的提示在 1-64 范围内:缓冲池提示:按 1/2 计算 (innodb_buffer_pool_size / innodb_buffer_pool_chunk_size)CPU 提示:按 1/4 的数目计算 可用的逻辑处理器 |
MySQL 8.0 |
---|
8 个(如果innodb_buffer_pool_size则为 1 个< 1 GiB) |
innodb_change_buffering
MySQL 8.4 | MySQL 8.0 |
---|---|
none 表示不缓存这些修改操作 | all 表示innodb_change_buffering会缓存插入、删除标记操作和后台发生的物理删除操作。 |
innodb_dedicated_server
MySQL 8.4 | MySQL 8.0 |
---|---|
如果 [a],则 innodb_flush_method 的值为 不再像 MySQL 8.0 那样更改,而是计算 的 innodb_redo_log_capacity 从基于内存更改为基于 CPU。查看更多 信息,请参见第 17.8.12 节 “为专用 MySQL 服务器启用自动配置”。ON | OFF |
innodb_adaptive_hash_index
MySQL 8.4 | MySQL 8.0 |
---|---|
OFF 控制是否启用自适应哈希索引 | ON |
innodb_doublewrite_files
MySQL 8.4 | MySQL 8.0 |
---|---|
2 | innodb_buffer_pool_instances*2 |
innodb_doublewrite_pages
MySQL 8.4 | MySQL 8.0 |
---|---|
128 | innodb_write_io_threads,这意味着一个 默认值为 4 |
innodb_flush_method
MySQL 8.4 | MySQL 8.0 |
---|---|
O_DIRECT如果支持,否则fsync | fsync |
innodb_io_capacity
MySQL 8.4 | MySQL 8.0 |
---|---|
10000 限制 InnoDB 数据库实例对磁盘的 I/O 能力,现在一般都是SSD的磁盘 | 200 |
innodb_io_capacity_max
MySQL 8.4 | MySQL 8.0 |
---|---|
2 * innodb_io_capacity | 2 * innodb_io_capacity,最小 默认值为 2000 |
innodb_log_buffer_size
MySQL 8.4 | MySQL 8.0 |
---|---|
67108864 (64 MiB) | 16777216 (16 MiB) |
innodb_numa_interleave
MySQL 8.4 | MySQL 8.0 |
---|---|
ON 控制 InnoDB 存储引擎在 NUMA 架构下的内存分配方式 | OFF |
innodb_page_cleaners
MySQL 8.4 | MySQL 8.0 |
---|---|
innodb_buffer_pool_instances | 4 |
innodb_parallel_read_threads
MySQL 8.4 | MySQL 8.0 |
---|---|
可用的逻辑处理器 / 8,最小默认值为 4 | 4 |
innodb_purge_threads
MySQL 8.4 | MySQL 8.0 |
---|---|
如果可用的逻辑处理器为 <= 16,则为 1,否则为 4 | 4 |
innodb_read_io_threads
MySQL 8.4 | MySQL 8.0 |
---|---|
可用的逻辑处理器 / 2,最小默认值为 4 | 4 |
innodb_use_fdatasync
MySQL 8.4 | MySQL 8.0 |
---|---|
ON 控制了 InnoDB 存储引擎在提交事务时是否使用 fdatasync() 函数来确保数据持久化到磁盘上 | OFF |
temptable_max_ram
MySQL 8.4 | MySQL 8.0 |
---|---|
总内存的 3%,默认值在 1-4 GiB 范围内 | 1 GiB |
temptable_max_mmap
MySQL 8.4 | MySQL 8.0 |
---|---|
0,表示OFF,用于控制 MySQL 临时表(Temporary Table)的内存映射操作的最大限制 | 1 GiB |
temptable_use_mmap
MySQL 8.4 | MySQL 8.0 |
---|---|
OFF | ON |
克隆插件
放宽了克隆插件版本控制要求,允许克隆 在同一系列中的不同点版本之间。
例如,克隆功能现在允许克隆 8.4.0 到 8.4.14,反之亦然。
MySQL 复制:标记 GTID
- GTID 是 MySQL 复制中用于标识全局唯一事务的一种机制,它可以跨多个服务器节点确保事务的唯一性和一致性。
- 在介绍中提到的新的 GTID 格式包含了 TAG,这是一个最多 8 个字符的字符串,用于在特定组中唯一标识事务。通过设置 gtid_next 系统变量的值,可以启用这种新的 GTID 格式。在新格式下,每个事务都会自动分配一个唯一的 TAG,这个 TAG 在事务提交时或在组复制中进行认证时被应用。
- GTID 的原始格式仍然保持不变,可以继续在不需要使用 GTID 的复制设置中使用。这个格式包含了 UUID 和 NUMBER
- SET @gtid_next=AUTOMATIC:TAGUUID:TAG:NUMBER 这个示例演示了如何使用新的 GTID 格式,其中 AUTOMATIC:TAGUUID:TAG:NUMBER 表示了新的 GTID 值
Mysqldump向后兼容
该版本为 mysqldump 添加了 --output-as-version 选项
此选项 允许您从 MySQL 8.2 或更高版本创建转储 与旧版本MySQL兼容; 它的值决定了 转储中使用的复制的兼容性:
- SERVER:获取 服务器并使用最新版本的复制 与该MySQL兼容的语句和变量名 版本。
- BEFORE_8_2_0:输出兼容 使用运行版本 8.0.23 至 8.1.0(含)。
- BEFORE_8_0_23:输出兼容 MySQL 服务器运行 8.0.23 之前的版本。
组复制
group_replication_set_as_primary
选举新主节点前,会等待正在进行的 DDL 语句完成。
group_replication_consistency
系统变量的默认值在 MySQL 8.4.0 中已更改为 EVENTUAL。在此之前,默认值是 BEFORE_ON_PRIMARY_FAILOVER。这个变量用于配置组复制的一致性保证级别,决定了在什么情况下事务在组中的副本之间达到一致性。更改后的默认值表示事务在组内的复制延迟可能导致一致性差异,但是在某些情况下可以提高性能。
group_replication_exit_state_action
系统变量的默认值在 MySQL 8.4.0 中已更改为 READ_ONLY。在此之前,默认值是 OFFLINE_MODE。这个变量用于配置组复制节点在退出组时的行为。更改后的默认值表示节点在退出组时会被设置为只读模式,以避免数据的写入操作。
FLUSH_PRIVILEGES特权
MySQL 8.4.0 中添加了一个新权限,专门用于 允许使用 FLUSH PRIVILEGES 语句。与 RELOAD 权限不同,FLUSH_PRIVILEGES 权限 仅适用于语句。FLUSH PRIVILEGES
OPTIMIZE_LOCAL_TABLE特权
MySQL 8.4.0 添加了新的OPTIMIZE_LOCAL_TABLE权限。用户必须具有此权限才能执行 OPTIMIZE 本地表和优化 NO_WRITE_TO_BINLOG TABLE 语句