mysql 日志
日志分类
-
错误日志:记录mysql服务的启动,运行或停止mysql服务时出现的错误
-
查询日志:记录建立的客户端连接和执行的语句
-
二进制日志:记录所有更改数据的语句,可用于数据复制和还原
-
慢查询日志:记录所有执行时间超过long_query_time的所有查询和不使用索引的查询
二进制文件 (show variables like 'log_%')
二进制文件主要记录mysql数据库的变化,包含更新了数据或者已经潜在更新了数据的操作
a.启动和设置二进制文件
在my.cnf中[mysqld]组下面设置如下
log-bin=path/filename
expire_logs_days=10
max_binlog_size=100M
其中 log-bin 定义开启二进制文件,path为路径,filename为文件名,生成的日志格式是 filename.000001,还有一个filename.index记录了所有日志的清单
expire_logs_days 表示日志自动删除的天数
max_binlog_size 表示文件大小,超过该大小,创建新文件,文件名加1,默认为1G
b.查看二进制日志
show BINARY LOGS; //可以查看文件名,及文件个数
mysqlbinlog /usr/local/mysql/var/mysql-bin.000001 //在bin里面
c.删除二进制文件
RESET MASTER; //删除二进制日志并且重新从编号000001开始创建
PURGE MASTER LOGS TO "mysql-bin.000007"; //删除编号7之前的文件,保留7
PURGE MASTER LOGS BEFORE '20130330'; //删除指定日期的文件
d.使用二进制文件还原数据库
mysqlbinlog --stop-date="2013-03-30 15:27:48" /usr/local/mysql/var/mysql-bin.000008 | mysql -u root -p 123456
恢复数据库到指定时间的状态
e.暂时停止二进制日志功能
执行sql语句
SET sql_log_bin = 0; //暂停记录
SET sql_log_bin = 1; //恢复记录
错误日志
默认情况下,错误日志是开启的,保存在数据库的数据目录下,文件名默认为hostname.err
a.启动和设置
在my.cnf中[mysqld]组下面设置如下
log-error=path/filename
b.查看错误日志
show variables like 'log_error';
文件也可以直接打开查看,里面就是文本
c.删除错误日志
flush logs;
通用查询日志
记录所有用户操作,包括启动关闭,查询语句和更新语句,mysql默认情况下没有开启通用查询日志
a.启动和设置
在my.cnf中[mysqld]组下面设置如下
log=path/filename
可以就光写log没有值,将默认存储在数据目录下,文件名是hostname.log
b.查看
可以使用记事本查看
c.删除
mysqladmin -u root -p flush-logs;
flush logs;
慢查询日志
a.启动和设置
在my.cnf中[mysqld]组下面设置如下
log-slow-queries=path/filename
long_query_time=n
b.查看
show VARIABLES like 'log_slow%';
也可以直接打开查看
c.删除
flush logs;
或者
mysqladmin -u root -p flush-logs;