mysql的日志管理

日志操作是数据库维护中最重要的手段之一,日志文件会记录MySQL服务器的各种信息,所以当MySQL服务器遭到意外损坏时,不仅可以通过日志文件来查看出错的原因,而且还可以通过日志文件进行数据恢复。

MYSQL的日志文件分为二进制日志,错误日志,通用查询日志,慢查询日志。除了二进制文件外,其他日志文件都是文本文件。默认情况下,MySQL只会启动错误日志文件,而其他日志文件则需要手动启动才可以被启动。

二进制日志:该日志文件会以二进制形式记录数据库的各种操作,但是不记录查询语句。

错误日志:该日志文件会记录MySQL服务器启动,关闭和运行时出错等信息。

通用查询日志:该日志记录MySQL服务器的启动和关闭信息,客户端的连接信息,更新数据记录SQL语句和查询数据记录SQL语句。

慢查询日志:记录执行时间超过指定时间的各种操作,通过工具分析慢日志可以定位MySQL服务器性能瓶颈所在。

使用日志有优点也有缺点。启动日志后,虽然可以实现对MySQL服务器进行维护,但是会降低MySQL软件的执行速度。

1. 操作二进制日志

二进制日志(BinLog)详细记录了数据库额变化情况,即SQL语句中的DDL和DML语句,但是不包括数据记录查询操作。通过二进制日志文件,可以详细了解MySQL数据库中进行了哪些操作。

操作二进制文件包括启动二进制日志,查看二进制日志,停止二进制日志和删除二进制日志。

1.1 启动二进制日志

默认情况下,二进制日志是关闭的,如果想启动二进制日志,可以通过设置MySQL服务器的配置文件my.ini来实现,具体内容如下:

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

参数dir用来指定二进制文件的存储路径,参数filename用来指定二进制文件的文件名,具体格式为filename.number,其中number的格式为000001,000002,000003等。

在具体启动二进制日志时,如果没有设置参数dir和filename,二进制日志文件将使用默认名字主机名-bin.number,保存到默认目录——数据库数据文件里。

默认配置:

[mysqld]
log-bin

配置存放路径:

[mysqld]
log-bin=d:mysqlloginlog

1.2 查看二进制日志

语法如下:

mysqlbinlog filename.number

1.3 停止二进制文件

可以直接到my.ini里面删除[mysqld]组里的log-bin内容即可。也可以通过命令SET实现暂停二进制日志,具体命令内容如下:

SET SQL_LOG_BIN=0
SET SQL_LOG_BIN=1

SQL_LOG_BIN的值为0时表示暂停二进制日志功能,SQL_LOG_BIN的值为1时表示重新开启二进制日志功能。需要注意的是只有拥有SUPER权限的用户,才可以执行SET语句。

1.4 删除二进制文件

如果要删除二进制文件,需要通过执行命令RESET MASTER,PURGE MASTERLOGS TO和PURGE MASTERLOGS BEFORE来实现。

语法如下:

RESET MASTER;

执行上述命令可以删除所有二进制文件。

PURGE MASTER LOGS TO filename.number

执行上述命令,可以删除编号小于number的所有二进制日志文件。

PURGE MASTER LOGS BEFORE ‘yyyy-mm-dd hh:MM:ss’

执行上述命令,可以删除指定时间(yyyy-mm-dd hh:MM:ss)之前所创建的所有二进行日志文件。

2. 操作错误日志

2.1 启动错误日志

语法如下:

[mysqld]

log-error[=dir[filename]]

2.2 查看错误日志

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

2.3 删除错误日志

mysqladmin –u root –p flush-logs

3. 操作通用查询日志

通用查询日志主要用来记录用户关于MySQL服务器的所有操作,包含MySQL服务器的启动和关闭信息,客户端的连接信息,更新数据记录SQL语句和查询数据记录SQL语句。

3.1 启动通用查询日志

[mysqld]

log [=dir[filename]]

以上方式需要重启MySQL服务器才可以设置生效,还有一种方式通过设置MySQL的环境变量进行动态的控制通用查询日志的开启与关闭。通过设置环境变量general_log进行通用查询日志的动态控制,而不需要重启MySQL服务器,操作如下:

set global general_log=on;
show variables like '%general_log%' G;

3.2 查看通用查询日志

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

3.3 停止通用查询日志

[mysqld]
#log [=dir[filename]]

上述需要重启MySQL服务器,动态设置停止通用查询日志的另外一种方式:

set global general_log=off;

3.4 删除通用查询日志

mysqladmin –u root –p flush-logs

4. 操作慢查询日志

慢查询日志记录执行时间超过指定时间的各种操作,通过工具分析慢日志可以定位MySQL服务器性能瓶颈所在。

4.1 开启慢查询日志

[mysqld]

log-slow-queries[=dir[filename]]
long_query_time=n

上述需要重启MySQL服务器,另外一种方式动态设置如下:

#通过设置环境变量slow_query_log进行慢查询日志的动态控制,on表示开启
set global  slow_query_log=on;
#设置慢查询日志最大允许的时间,单位为秒
set global long_query_time=3;

4.2 查看慢查询日志

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

4.3 分析慢查询日志

对应的工具为mysqldumpslow.pl,常用参数如下:

“-s”为分析慢查询日志时指定排序参数,可选的有:“al”表示平均锁定时间,

“ar”表示平均返回记录数,“at“表示平均查询时间。“-t“参数表示只显示指定的行数。

#分析慢查询日志

C:Program FilesMySQLMySQL Server 5.5in>mysqldumpslow.pl  -s at -t 1 "C:Documents and SettingsAll UsersApplication DataMySQLMySQL Server 5.5dataMHX0JCJYUC7PDAA-slow.log”

“-s at”表示将分析的结果按平均查询时间排序,“-t 1”表示只显示符合条件的第1条。

注意:在分析慢查询日志时,mysqldumpslow.pl为一perl语言编写的脚本,执行该脚本需要对应的perl语言环境,perl环境的安装包可以在http://www.perl.org/下载。

4.4 停止慢查询日志

[mysqld]

#log-slow-queries[=dir[filename]]
#long_query_time=n

注释掉即可停止,但上述需要重启MySQL服务器,另外一种方式动态设置如下:

#通过设置环境变量slow_query_log进行慢查询日志的动态控制,off表示关闭
set global  slow_query_log=off;

4.5 删除慢查询日志

通过Windows的删除命令直接将满查询日志删除,然后使用以下命令重新创建对应文件,语法如下:

删除慢查询日志文件:

C:Program FilesMySQLMySQL Server 5.5in>del  C:Documents and SettingsAll UsersApplication DataMySQLMySQL Server 5.5dataMHX0JCJYUC7PDAA-slow.log

重新刷新慢查询日志:

mysqladmin –u root –p flush-logs

执行上述命令,MySQL服务器会创建一个新的慢查询日志,此时慢查询日志为空。

原文地址:https://www.cnblogs.com/longshiyVip/p/4659256.html