mysql日志分类
mysql的日志分类:
(1)错误日志:记录mysql服务的启动,运行,停止mysql服务时出现的问题
[mysqld]
log_error=[/path/filename]
(2)通用查询日志:记录建立的客户端链接和执行语句
[mysqld]
log=
通用查询日志记录mysql用户所有用户操作,包括启动、关闭服务,执行查询和更新语句等
(3)二进制日志:记录所有更改数据的语句,可用于数据复制(默认关闭)
配置:[mysqld]
log-bin = [/] 文件目录
expire_logs_days=10 //10天后日志文件自动删除
max_binlog_size=100M //单个文件的最大大小
此日志文件不能直接打开,可以通过命令:binlog 文件名 查看
删除二进制日志:mysql可以自动删除,下面介绍2中手动删除:
1)reset master;//删除所有日志
2)purge master logs to 'logname';//指定文件名
purge master logs before 'date';//指定日期
例如:purge master logs before '20170202';
使用二进制日志还原数据库:如果mysql数据库丢失数据时,可以使用mysqlbinlog根据从指定的时间点开始直到现在,
或另一时间点的日志中恢复数据,
恢复数据语法:
mysqlbinlog [options] filename|mysql -uuser -ppass
对于一些因误操作导致的数据丢失非常有效
暂时暂停2进制日志功能,set sql_log-bin=0|1 //0:暂停记录 1:恢复记录
(4)慢查询日志:记录查询时长超过指定时间的日志
刷新日志:mysqladmin flush-logs 或 mysqladmin refresh
或执行一个语句:flush logs
1、慢查询日志是记录查询时长超过指定时间的日志,记录执行时间较长的查询语句,通过慢查询日志可以找出执行时间较长,执行效率较低的语句,然后进行优化,
启动和设置慢查询日志:
mysql中默认慢查询日志是关闭的,可以通过my.ini或my.cnf中的log_slow_queries选项打开,也可以在mysql服务启动的时候使用--log-slow-queries[=file_name]启动
慢查询日志,
[mysqld]
log_slow_queries[=file_name]
long_query_time=n
查看慢查询日志:
删除慢查询日志:和通用查询日志一样,慢查询日志也可以直接删除,删除后在不重启服务器的情况下,需要执行mysqladmin -u root -p flush-logs
重新生成文件,或者在客户端登录到服务器执行flush logs语句重建日志文件
这些所有的设置变量都可以通过show variables 命令查看
例如:
show variables like '%log_%';
在平常的工作中这 4种日志应该打开哪些日志呢?
日志既会影响mysql的性能,也会影响大量的磁盘空间,因此,如果不是必要,应竟可能少的开启日志,根据不同的环境开启不同分日志,
例如在开发过程中优化查询效率低的日志可以开启慢查询,如果需要记录用户的所有操作可以开启通用查询日志,如果需要记录数据的变更
可以开启2进制日志,错误日志默认是开启的