Py学习  »  DATABASE

MySQL 8.0 停服倒计时!升级将遇到什么问题?

DBAplus社群 • 1 周前 • 85 次点击  

最近关心MySQL的有点少,主要是大部分数据库都迁移到PolarDB for MySQL上,而最近看percona的一则信息,2026年4月MySQL8.0将停止8.0的维护,也就是说8.0的安装补丁,问题bug的解决,漏洞的修补将全部不在负责,如果你还给Oracle提交8.0数据库的一些问题,他们也将不搭理你。


同时也要注意到MySQL里面习惯看到的deprecated的警告将变成真的。目前MySQL建议升级到LTS 8.4版本的MySQL. 同时一些老的管理MySQL的工具也该更新了,比如一直使用的MySQL,应该更新为mysql shell,mysqlsh,同时带来的问题还有一些命令,set password = password的命令,也将被抛弃,这说明还停留在8.0以及8.0以下版本知识的DBA,将可能会陷入尴尬。


另外针对老版本写的程序,周边的软件很可能在你升级数据库后,无法使用,这一部分是由于系统变量名称的改变,也有一部分是新的系统变量的加入老的系统变量被替代导致的,监控,分析软件出现问题,这些软件也需要同步升级,如果很不幸你是自己开发或者是开源的,那么就不好说了。


MySQL 8.0 → 8.4 重要变更汇总


1、已移除 (Removed) 的系统变量与功能


类别
已被移除的变量/功能
功能描述
替代方案 / 处理办法
事务
tx_isolation
旧的事务隔离级别变量名
使用 transaction_isolation,在 my.cnf 与连接字符串中替换
事务
tx_read_only
旧的事务只读模式变量名
使用 transaction_read_only,全局替换
二进制日志
expire_logs_days
binlog 过期时间(天计)
使用 binlog_expire_logs_seconds,如 expire_logs_days = 7 → binlog_expire_logs_seconds = 604800
半同步复制
rpl_semi_sync_master_wait_for_slave_count
主库等待从库确认数量(旧)
使用 rpl_semi_sync_source_wait_for_replica_count
半同步复制
rpl_semi_sync_master_timeout
主库等待超时(旧)
使用 rpl_semi_sync_source_timeout
半同步复制
rpl_semi_sync_master_trace_level
主库调试跟踪级别(旧)
使用 rpl_semi_sync_source_trace_level
半同步复制
rpl_semi_sync_slave_trace_level
从库调试跟踪级别(旧)
使用 rpl_semi_sync_replica_trace_level
组复制
group_replication_ip_whitelist
IP 白名单(旧称)
使用 group_replication_ip_allowlist
网络
skip_name_resolve
 ON/OFF 文本值
布尔值不再支持 ON/OFF 文本
只接受数字 0 或 1 设置
函数
PASSWORD()
旧式密码哈希函数
移除:用 CREATE USER ... IDENTIFIED BY '...' 或 ALTER USER ... IDENTIFIED BY '...' 替代
复制命令
CHANGE MASTER TO
START SLAVE, ...
旧的复制命令术语
使用现代命令:CHANGE REPLICATION SOURCE TOSTART REPLICASHOW REPLICA STATUS


2、已弃用 (Deprecated) 的系统变量与功能


类别
已弃用的变量/功能
功能描述
建议 / 替代方案
认证
mysql_native_password
较旧、较弱的插件
审计 mysql.user 表,把用户迁移至 caching_sha2_password 等更安全方式
认证
default_authentication_plugin
设置默认认证插件
已重命名为 default_authentication_policy,提供更灵活策略
命令
FLUSH HOSTS
清除主机缓存
在现代部署中作用有限,建议从脚本中移除
启动选项
--skip-grant-tables
绕过权限检查(安全风险)
推荐使用 --init-file 方法进行密码恢复
数据类型
FLOAT(M,D)
 / DOUBLE(M,D)
非标准的浮点精度/标度声明语法
在结构里使用标准 FLOAT / DOUBLE,精度和格式在应用逻辑中处理


以下是一些根据 MySQL 更新日志或常见实践判断,可能也属于“已移除”或“已弃用”的项目,建议你核对并决定是否需要加入文档:


已移除的一些参数:


  • --log_slow_verbosity:MySQL 8.4 之后可能进一步简化日志参数配置


  • stored_program_cache_size:该参数在 8.0 中弃用,可能在 8.4 中已移除


已弃用的一些参数:


  • query_cache_size, query_cache_type:虽然早在 8.0 即废弃,但确认下是否仍有残余设定提示


  • innodb_old_blocks_time:优化相关参数,检查是否仍被警告将废弃


  • innodb_print_all_deadlocks:诊断参数,确认是否仍推荐迁移为新方案


随着MySQL高版本的使用的数量的公司和人减少,高版本的知识和一些内容在网上搜到的越来越少,如果要使用高版本的MySQL 可能还有更多的部分需要补充,备份,高可用的方案等等,期待一些使用高版本的个人和公司可以将这部分知识进行共享。


作者介绍

刘华阳,20年经历风霜雨打的 DBA,5年的 DBA 架构和团队管理经验,只要是数据库都喜欢学习。PostgreSQL ACE,MongoDB 狂热者,10年的 MYSQL 工作经验,现在在玩 POLARDB 与时俱进。


来源丨公众号:AustinDatabases(ID:AustinDatabases)
dbaplus社群欢迎广大技术人员投稿,投稿邮箱:editor@dbaplus.cn


Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/189485