MYSQL QUERY CACHE 启停状态 检查及禁用方法

一,问题背景

近日有项目现场发生了一起严重的生产事故,事故根因之一便为 MySQL 服务器开启了Query Cache;另外,MySQL Query Cache 特性自 2013 年的 MySQL 5.6 版本起便已默认禁用,之后在 2017 年 10 月发布的 MySQL 5.7.20 版本中标记为降级(后续已在 MySQL 8.0 中正式移除),因此,MySQL Query Cache 已成为无任何官方支持的特性,同时,对于其的评
价,一些场景下往往是弊大于利。

二,检查 MySQL Query Cache 是否已启用

登录 MySQL 服务,执行如下 SQL 命令:

mysql> select @@global.query_cache_type;

如 MySQL 服务端未开启 Query Cache,则输出应为 OFF 或者为 0(如下图即为 OFF);
如输出非 OFF 或者非 0,请参考后续章节内容禁用 MySQL Query Cache。
在这里插入图片描述

三,禁用 MySQL Query Cache 的方法

1. 以下两个禁用方案请按实际情况二选一执行;
2. 两个方案实际都修改了 MySQL 配置文件,请谨慎修改并做好备份。

3.1. 在线禁用方法
如现场 MySQL 服务不便于安排停机,则可考虑在线禁用。
步骤 1/3:
登录 MySQL 服务端后,执行如下 SQL 命令直接取消 Query Cache 的内存分配:

mysql> set global query_cache_size=0;

步骤 2/3:
使用如下命令备份当前的 MySQL 配置文件,并将备份文件按日期来命名(假设今天为 2020/09/02,则生成的备份文件名为/etc/my.cnf.2020-09-02)。

 cp /etc/my.cnf /etc/my.cnf.$(date +%F)

步骤 3/3:
编辑 MySQL 配置文件(默认为/etc/my.cnf),找到query_cache_type 这一行,
在行首增加#以将该行注释,然后保存修改,以使下次重启 MySQL 服务后继续保持禁用Query Cache。

3.2. 停机禁用方法
在线禁用方法虽然修改了/etc/my.cnf 文件,但未重启 MySQL 以验证配置修改无误,因此,如条件允许,可考虑采用此小节停机并修改配置以禁用 Query Cache 的方法。
步骤 1/3:
编辑 MySQL 配置文件(默认为/etc/my.cnf),找到 query_cache_type 这一行,在行首增加#以将该行注释,然后保存修改。
步骤 2/3:
使用如下命令备份当前的 MySQL 配置文件,并将备份文件按日期来命名(假设今天为 2020/09/02,则生成的备份文件名为/etc/my.cnf.2020-09-02)。

cp /etc/my.cnf /etc/my.cnf.$(date +%F)

步骤 3/3:
重启 MySQL 服务,如服务启用异常,请结合 MySQLError Log 来分析处理。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值