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;

浙公网安备 33010602011771号