MySQL运维篇-日志

日志

这里讲述的日志是Server层的日志,

1.错误日志


       记录了当mysql启动和停止时,以及服务器在运行过程中发生任何严重错误时的相关信息。当数据库出现任何故障导致无法正常使用时,建议首先查看此日志。

       错误日志默认开启,存放在/var/log/,默认日志名为mysql.log

MySQL运维篇-日志_第1张图片

       当我们更改了mysql的uuid,并进行重启mysql时,会报错,但是报错信息不会告诉你,是哪里有了问题,但是在报错日志中,我们可以知道是哪个文件有问题

MySQL运维篇-日志_第2张图片

2.二进制日志


       记录了所有DDL语句和DML语句,但不包括数据查询语句(select、show)


        2.1作用

         1.灾难时的数据恢复:可以使用 mysqlbinlog对二进制日志文件进行重构
         2.MySQL的主从复制(后面会重点学习):主从复制主要是基于二进制日志


        2.2日志格式

         日志格式主要有三种:
        1.statement:基于sql语句的日志记录,记录的是sql语句,对数据库进行修改的sql都会记录在日志文件中。
        2. row:基于行的日志记录,记录的是每一行的数据变更
        3.mixd:混合了ststement和row两种格式,默认采用statememnt,在某种特殊情况下会自动切换为row进行记录

         通过此系统变量来查看二进制日志相关的参数配置
         show varitables like  '%binlog_format%'; 

MySQL运维篇-日志_第3张图片

        2.3 查看二进制日志文件


          mysqlbinlog 参数选项 二进制日志文件名
          参数选项:-d 指定数据库
                           -v 将行事件重构为sql语句
                           -w 将行数据重构为sql语句,并输出注释信息


           2.4日志删除

            清理二进制日志文件

  •       reset master  删除全部binlog日志
  •       purge master logs to 'binlog.***'   删除***编号之前的所有日志
  •       purge master logs before '时间'    删除时间之前生产的所有日志

3.查询日志


       记录了客户端的所有操作语句,而二进制日志不包含查询数据的sql语句,查询日志默认未开启。

MySQL运维篇-日志_第4张图片
       

3.1注意

  • 1.查询日志由于记录客户端的所有操作语句,会产生额外的I/O开销,建议在生产环境中慎重考虑
  • 2.长时间运行后,该日志文件将会非常大,所以用不上此日志文件,我们可以把它关上
  • 3.优化数据库性能时,查询日志是一个有力的工具

3.2开启查询日志配置

        流程如下:
             1.找到对应参数show variables like '%general%';
              2.修改MySQL的配置文件 /etc/my.cnf
              3.添加
                  general_log = 1 开启查询日志
                  general_log_file = /var/lib/mysql/mysql_query.log 设置日志文件名 

进行配置/etc/my.cnf

MySQL运维篇-日志_第5张图片

如图可见,我们的查询日志就开启啦

MySQL运维篇-日志_第6张图片

这是查询日志的内容,可以看到SQL语句

MySQL运维篇-日志_第7张图片

4.慢查询日志


       记录了所有执行时间超过参数long_query_time设置值并且扫描记录不小于min_examined_row_limit的所由sql语句,默认未开启。
       long_query_time默认为10秒1,最小为0,精度可以到微秒

4.1作用

  • 1.发现性能问题
  • 2.优化查询语句
  • 3.监控数据库健康状态


 4.2开启慢查询日志

         流程如下:
               1.修改MySQL的配置文件 /etc/my.cnf
               2.添加
                         slow_query_log = 1 开启慢查询日志
                         long_query_time = 2 调整为两秒
               3.默认情况下,不会记录管理语句,也不会记录不使用索引进行查找的查询。
                  但是可以更改此行为:
                              log_slow_admin_statements = 1
                              #记录执行较慢的管理语句
                              log_queries_not_using_indexes = 1
                              #记录执行较慢的未使用索引的语句

进行配置/etc/my.cnf

MySQL运维篇-日志_第8张图片

慢查询日志开启

MySQL运维篇-日志_第9张图片

你可能感兴趣的:(mysql,运维,数据库)