slow_log.csv慢查SQL文件清理

87 阅读2分钟

标准步骤

场景说明

场景说明其他说明
slow_log.csv文件过大,且实例角色为主库这个表是slow-log TABLE格式的数据文件,默认用的是CSV引擎
slow_log.csv文件过大,且实例角色为从库 

场景1,slow_log.csv文件过大,且实例角色为主库

  1. 暂停主从的慢查功能

暂停主库和从库的慢查功能:

mysql> SET GLOBAL slow_query_log = 'OFF';

配置类的SQL不会同步到从库上,因此清理主库慢查csv之前,主从上都要手工停止slow log;否则从库将无法执行后续重命名,重建表的SQL,导致复制停止。报错示例:

Worker 16 failed executing transaction '5ce8be00-2984-11eb-87ff-3868dd2aded8:736835887' at master log mysql-bin.010720, end_log_pos 148424470; Error 'Table 'mysql.slow_log_drop' doesn't exist' on query. Default database: 'mysql'. Query: 'CREATE TABLE slow_log LIKE slow_log_drop'
  1. 在主库上,重命名slow_log表

mysql> ALTER TABLE slow_log RENAME slow_log_drop;
  1. 在主库上,重建新的slow_log表

mysql> CREATE TABLE slow_log LIKE slow_log_drop;
  1. 在主从上,重启慢查功能

mysql> SET GLOBAL slow_query_log = 'ON';
  1. 清理旧slow log表

mysql> DROP TABLE slow_log_drop;



场景2,slow_log.csv文件过大,且实例角色为从库

  1. 在从库上,暂停慢查功能

mysql> SET GLOBAL slow_query_log = 'OFF';
  1. 临时关闭从库的binlog

防止后续SQL多GTID,影响复制

mysql> set session sql_log_bin = 0;
  1. 在从库上,重命名slow_log表

mysql> ALTER TABLE slow_log RENAME slow_log_drop;
  1. 在从库上,重建新的slow_log表

mysql> CREATE TABLE slow_log LIKE slow_log_drop;
  1. 在从库上,重启慢查功能

mysql> SET GLOBAL slow_query_log = 'ON';
  1. 清理旧slow log表

mysql> DROP TABLE slow_log_drop;
  1. 在从库上,开启binlog

mysql> set session sql_log_bin=1;



事后验证

  • 观察告警/监控屏/df -h命令输出
  • ls -hl 检查文件大小