如果你也使用宝塔面板,并且恰好遇到 MySQL 无法启动的情况,那么我猜你大概率是使用了宝塔面板中 MySQL 管理中的“性能调整”功能,因为子凡我已经在这里栽跟头好几次了,今天就简单的给大家分享一下解决办法。
宝塔面板 MySQL 数据库无法启动或重启失败的主要问题就是由于 query_cache_type、query_cache_size 参数导致,MySQL 5.6 默认关闭 Query Cache,但仍支持配置。MySQL 5.7 继续支持 Query Cache,但默认值设为关闭状态。MySQL 从 8.0.0 版本开始移除了 query_cache_type、query_cache_size 以及整个 Query Cache 功能。也就是说从 MySQL 8.0 起,Query Cache 被彻底废弃。
所以如果你的 MySQL 数据版本为 8.x.x 及以上,并且使用宝塔面板的 MySQL 管理中的优化方案进行过调整切换,那么大概率就是 MySQL 无法启动的原因了,所以解决办法就是将 query_cache_size 设置为 0、query_cache_type 相关的配置注释掉。
首先通过性能调整将 query_cache_size 设置为 0,然后在配置修改中将 query_cache_type 前面加上井号注释掉,其实删除也可以,为了保险起见可以搜索查找一下“query_cache”开头的都可以注释掉。最后在服务里面启动大概率应该就可以了。
Query Cache 是一种用于缓存查询结果的机制,可以提高读取性能。但随着数据库的现代化发展和其他缓存策略(如应用层缓存、Redis、Memcached)的普及,Query Cache 的局限性逐渐显现,Query Cache 的实现依赖全局锁,每次写操作会使缓存失效,导致并发性能下降;数据表的每次更新都会导致相关缓存被清除,频繁更新的表可能让 Query Cache 得不偿失。
如果项目升级到 MySQL 8.0 或更高版本,并且原来依赖 Query Cache,可以考虑使用 Redis、Memcached 或其他内存数据库缓存查询结果,或在代码中管理缓存的更新和失效逻辑,添和优化加索引,使用适当的查询重写技术,以及在应用程序中保存特定的查询结果到内存中,这些方法可以更好地适应现代数据库的需求,同时避免 Query Cache 的弊端。
除非注明,否则均为泪雪博客原创文章,禁止任何形式转载
本文链接:https://zhangzifan.com/bt-mysql-restart.html