MYSQL的日志有好几种,分别是二进制日志,错误日志,通用查询日志,慢查询日志。下面一一终结
一、二进制日志
1、 默认情况下二进制日志是关闭的。通过my.cnf或者my.ini就可以开启了。开启的方式是在mysqld下添加:log-bin=D:\mysql-5.6.25-winx64\log\mylog这一段有考究,除了最后一个mylog,前面其他的是目录。而mylog是文件名。如果你只加一个log-bin的话,也是可以开启的,不过文件就会默认保存在数据库的数据目录下,名字就是你hostname.000001这样的格式。
2、 二进制日志是每重启一次mysql就会生成一个新的,后面的数字一直递增。查看二进制文件,不能直接打开。需要用到mysqlbinlog命令。如果你的环境变量把mysql的bin目录设置了的,直接用dos命令切到二进制文件的那个目录下,敲mysqlbinlog filename.number(按照我前面的例子这儿就是mysqlbinlogmylog.000001)。如果你的环境变量没设置,就在mysql的bin目录下,敲mysqlbinlog D:\mysql-5.6.25-winx64\log\mylog.00001(这儿是实际例子)。
3、 删除二进制日志。删除所有的二进制日志,登录mysql,然后执行reset master; 。根据编号删的话purge master logs to “filename.number”; (purge这儿只是'filename.number'不包含文件路径)),哦,必须说这条语句是删除这个编号之前的二进制文件。根据创建时间删的话,语句是purge master logs before “2015-9-3 18:53:00”;这个顾命思义,就是删除这个时间之前的。
4、 这一点,我觉得很有意思,很重要,用二进制日志还原数据库。我们要先弄懂一点,不管你看备份数据库的文件还是什么,要还原,那么这里肯定要有insert 语句,update语句,或者create语句才行。如果你在上一分二进制文件里有这些语句,而下一份语句里没有,你可以在dos窗口下输入mysqlbinlog filename.number|mysql –u root –p,当然这儿没输入目录,所以你要到二进制文件的目录下,而且配置好环境变量。如果你没在二进制文件的目录下,你就要加上目录,即C:\Users\Administrator>mysqlbinlog --no-defaults--stop-datetime="2015-9-3 14:31:41"D:\mysql-5.6.25-winx64\log\mylog.000018 |mysql -u root –p这句是一个实际例子,有时候你用这个命令,包括上面提到的查看二进制文件的命令,会遇到unknown variable 'default-character-set=utf8’ 这个时候你就加一个—no-defaults,注意第一个是两个短横线。而你是在一个二进制文件里,既保存的有你创建,更新,插的语句,的话就会用到这些选项--start-datetime、--stop-datetime、--start-position、--stop—position。--start-datetime、--stop-datetime可以指定恢复数据库的起始时间点的终止时间点。--start-position、--stop--position可以指定恢复数据的开始位置和结束位置
5、 有时后你不想把你的操作被二进制日志记录的话,你可以在mysql客户端下敲set sql_log_bin=0;然后你就操作,结束的时候要记得用set sql_log_bin=1;把它恢复原状。---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
二、错误日志
1、 首先说一下,在MYSQL数据库中错误日志是默认开启的,而且错误日志是你无法禁止的。默认情况下错误日志存储在数据文件下,名称通常为hostname.err
2、 你不想让错误日志保存在默认路径或者你不想让它就叫那名了,可以在my.ini或者my.cnf下改。log-error=D:\mysql-5.6.25-winx64\log\error这个和第一个二进制的解释一样的路径加名字
删除错误日志,我们都要向前看,所以老版本就不讲了,新版本下你用mysqladmin –u root –p flush-logs是不能新建一个新的,把旧的改成filename.err-old的。你要删除,就要直接删,删了之后用这个命令嘛,到是可以马上生成一个新的错误日志文件。对了这个命令的等价模式是你登录mysql后,用flush logs;
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
三、通用查询日志
1、 默认情况下,通用查询日志是关闭的,可以在my.ini或者my.cnf下改。通用查询日志是用来记录用户的所有操作,包括启动和关闭MYSQL,更新和查询等。
2、 因为用的新版本,之前看的书上的方法是不能开启通用查询日志的。正确的方法是
general_log=ON、log_output=FILE、general_log_file=D:/mysql-5.6.25-winx64/log/general.log这三句。这其中的意思不用赘述了。
3、 查看通用查询日志嘛,很简单,直接打开那个文档就好了。删除的话也是只有手动删除,然后你用mysqladmin –u root –p flush-logs可以在没有这个文件的时候,自动生成,避免重启一次嘛。(这和上面一样)
4、 顺便说一下,如果你不想让你的操作被记录,可以用set global general_log=on|off;来处置。
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
四、慢查询日志
1、 这个顾名思义,慢查询日志就是用来记录执行时间超过指定时间的查询语句。通过慢查询日志,可以找到那些执行效率低的语句,从而优化他们。默认情况下他们是关闭的。
2、 启动这个慢查询日志的话,在my.ini下的mysqld下( 这儿整篇文章都说的一样),加slow_query_log=on、long_query_time=3、low_query_log_file=D:/mysql-5.6.25-winx64/log/slow.log。本不必赘述的,但还是说一下第二个的意思,就是表明,好多秒后这个就会被记录,好多秒就可以认定他是一个慢查询的语句了。对了你还可以加一句:,log_queries_not_using_indexes
这个参数设置为ON,可以捕获到所有未使用索引的SQL语句,尽管这个SQL语句有可能执行得挺快
3、 查看慢查询日志也很简单,直接打开。删除也要直接删,mysqladmin –u root –p flush-logs和登录目录后的flush logs只是,在删除完毕后,不用重启就生成文件。
9565

被折叠的 条评论
为什么被折叠?



