MySQL日志管理

1、MySQL日志管理

由于日志文件是掌握数据库运行状态的重要参考,因此日志文件的维护也有十分重要的意义。

mysql的日志类型有二进制日志,错误日志,通用日志,慢查询日志。

日志文件都存储在数据库的根目路径录下(在my.ini中的Path to the database root找到)

2、二进制日志文件

① 启动:在my.ini配置文件中找到[mysqld]语句,在下方写入log-bin启动日志文件;需要重启MySQL服务

  • [mysqld]
  • log-bin[=dir\[filename]]

② 查看:DOS命令行进入到数据库的根目路径录下(在my.ini中的Path to the database root)

  • mysqlbinlog 日志文件名-bin.000001;
  • mysql > show master logs;查看当前服务器的二进制日志列表;

③ 停止:直接注释掉my.ini下的log-bin;需要重启MySQL服务

  • [mysqld]
  • #log-bin[=dir\[filename]]

④ 刷新:将没有刷新到磁盘中的内存数据刷新到磁盘;并终止当前的bin-log写入,同时插入一个新的bin-log

  • flush logs

⑤ 删除

  • PURGE MASTER LOGS TO "filename.number";删除编号小于number的所有二进制日志文件
  • PURGE MASTER LOGS BEFORE "yyyy-mm-dd hh:MM:ss";删除指定时间之前创建的所有二进制日志文件

3、错误日志

① 启动:在my.ini配置文件中找到[mysqld]语句,在下方写入log-error启动错误日志文件;需要重启MySQL服务

  • [mysqld]
  • # Error Logging.错误日志
  • log-error[=dir\[filename.err]] ;可以不指定文件名

② 查看:文本文件,可以直接用文本工具查看

③ 停止:直接注释掉my.ini下的log-error;需要重启MySQL服务

  • [mysqld]
  • # Error Logging. 错误日志
  • # log-error[=dir\[filename.err]]

④ 删除:DOS命令行进入到数据库的根目路径录下(在my.ini中的Path to the database root)

  • 手动删除数据库根目录下的 错误日志.err 文件,这时候并没有释放句柄,需要执行以下命令。
  • mysqladmin -u用户名 -p用户口令 flush-logs;释放句柄,重生成文件

4、通用查询日志

如果查询语句过多,导致产生的IO与系统开销高,一般为关闭状态

① 启动:在my.ini配置文件中找到[mysqld]语句,在下方写入log-error启动错误日志文件;需要重启MySQL服务

  • [mysqld]
  • # General and Slow logging. 
  • general-log=1
  • general_log_file="filename-in.log"
  • mysql > set global general_log=on开启通用日志

② 查看:文本文件,可以直接用文本工具查看

  • mysql > show variables like "%general_log%"\G;查看通用日志状态信息

③ 停止将log-general-log的值置为0或直接注释掉my.ini下的log-bin;需要重启MySQL服务

  • [mysqld]   
  • # log-general-log=0
  • # general_log_file="filename-in.log"
  • mysql > set global general_log=off关闭通用日志

④ 删除:到数据库的根目路径录下进行手动删除(在my.ini中的Path to the database root)

  • 主机名.log文件
  • mysqladmin -u用户名 -p用户口令 flush-logs;释放句柄

5、慢查询日志

性能分析与定位

① 启动:在my.ini配置文件中找到[mysqld]语句,写入下方语句启动慢查询日志文件;需要重启MySQL服务

  • [mysqld]
  • slow-query-log=1
  • slow_query_log_file="filename-slow.log"
  • long_query_time=time;设置慢查询最大允许的时间
  • # 通过设置环境变量slow_query_log进行慢查询日志的动态控制,on表示开启
  • mysql > set global slow_query_log=on;
  • # 设置慢查询最大允许的时间
  • mysql > set global long_query_time=time;

② 查看

  • 文本文件,可以直接用文本工具查看
  • mysql > show variables like "%slow%";查看慢查询日志状态信息

③ 分析慢查询日志:对应工具为mysqldumpslow.pl,常用参数如下:

  • -s 为分析慢查询日志时指定排序参数。
    • 可选参数:al 表示平均锁定时间;ar 表示平均返回记录数;at 表示平均查询时间;
  • -t 参数表示只显示指定的行数。
  • DOS命令行中在MySQL的bin目录下使用mysqldumpslow.pl -s at -t 1 "数据库根目录路径\主机名-slow.log"
  • 解释:-s at 表示将分析的结果按平均查询时间排序,-t 1 表示为只显示符合条件的第一条;
  • 注意:mysqldumpslow.pl为perl语言编写的脚本,执行该脚本需要对应的perl语言环境,环境安装包在http://www.perl.org下载;

④ 停止

  • [mysqld] 注释或删除配置文件中的语句停止日志,需要重启服务器
  • # log-slow-queries[=dir\[filename]]
  • # long_query_time=time;
  • mysql > set global slow_query_log=off将变量的值设置为off为停止

⑤ 删除:到数据库的根目路径录下进行手动删除(在my.ini中的Path to the database root)

  • 主机名-slow-log.文件
  • mysqladmin -u用户名 -p用户口令 flush-logs;刷新重新加载释放句柄

⑥ 刷新慢查询日志

  • mysqladmin -u用户名 -p用户口令 flush-logs; 
posted @ 2019-10-19 21:20  ohmok  阅读(177)  评论(0)    收藏  举报