之前对mysql仅日志这块只是掌握了一个使用和拍错,至于日志这块知道怎么用和如何去用,但总觉得不是很系统,和mysql相关的日志有很多,这里简单梳理总结记录下,便于后续优化和排错使用。
1,mysql错误日志error
记录mysql在启动、关闭或运行过程中遇到的错误信息,如果mysql异常了,可以这里查询。 默认开启而且存放到了datadir所在目录,文件名hostname.err。
如果自己指定,那么位置如下:
[mysqld_safe] log-error=/mnt/data3308/mysql_3308.err
不过一般采用默认,单独制定的话采用log-error=filename ,了解。
2,查询日志querylog
查询日志可以分为两类:普通查询日志和慢查询日志。
普通查询:general query log,这个是客户端连接信息和sql语句的查询操作相关的信息,一般不开启。原因是大量的查询会导致磁盘IO过高和日志文件过多过大,对系统性能都是有影响的。了解即可。
慢查询:slow query log,记录执行时间超过指定值比如long_query_time 的sql语句。这个是非常重要的,一般都要开启,这个可以给DBA和开发做优化使用。如果没有指定filename,那么日志目录在datedir目录下,且默认的名字为hostname-slow.log。
慢查询一般用到的参数:
[mysqld] slow_query_log long_query_time = 1 slow_query_log_file = /mnt/data3308/mysql3308-slow.log
参数说明:
slow_query_log 慢查询开启状态
long_query_time 查询超过多少秒才记录
slow_query_log_file 慢查询日志存放的位置(需要mysql运行账号对该目录有访问和写入 权限。)
测试:执行sql语句
select sleep(2);
可以查看慢查询日志记录情况。
3,二进制日志。
记录增删改的sql语句,只要是引起数据变动的语句都会记录。这个作用就非常大了,一般我们用来做mysql主从同步(基于二进制进行数据传递)、增量备份或数据库恢复。
开启步骤和常用参数:
[mysqld] server-id = 1 log-bin=mysql-bin binlog_format=mixed //这里说明下,一般采用混合模式。 expire_logs_day=3 //超过三天删除 max_binlog_size 100m //binlog每个日志文件大小 最大值和默认是1个G
如果没有指定路径,就是存放到了datadir所在目录,下边有一个索引文件mysql-bin.index和一些mysql-bin.000001 mysql-bin.000002之类的日志文件。 其中mysql-bin.index可以cat查看,这个是记录一个日志文件的索引信息,其他日志文件比如mysql-bin.000001o我们可以使用mysqlbinlog命令进行查看。日志文件有记录增删改的sql语句以及起始位置、结束为止和一些时间段。
[root@21yunwei var]# mysqlbinlog mysql-bin.000001 | more /*!40019 SET @@session.max_insert_delayed_threads=0*/; /*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/; DELIMITER /*!*/; # at 4 #160518 23:38:42 server id 1 end_log_pos 106 Start: binlog v 4, server v 5.1.69-log created 160518 23:38:42 at startup ROLLBACK/*!*/; BINLOG ' gow8Vw8BAAAAZgAAAGoAAAAAAAQANS4xLjY5LWxvZwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAACCjDxXEzgNAAgAEgAEBAQASDFJKKAAUwAEGggAAAASSICAgC '/*!*/; # at 106 #160518 23:38:44 server id 1 end_log_pos 235 Query thread_id=1 exec_time=0 error_code=0
暂时记录这么多。有一个大体了解和参数记录。