msyql 日志篇(二)日志的常用配置和原理

    xiaoxiao2026-06-08  5

    日志详解之:常规日志; 慢查询日志;二进制日志;中继日志

    出错日志(error log):(log_error)这个日志记载着服务器启动和关闭的情况,还记载着关于故障或异常状况的消息。

    我们安装完数据库之后,启动数据库如果发生异常,我们应该首先查这个日志文件。

    常规查询日志:(log)该日志包括客户连接的记录,来自客户的SQL查询和其他的各种事件。 一般我们可以用其来监视用户的活动,谁在连接,从哪连接,执行哪些操作

    常用的使用方法:

    1.日志的输入与配置:

    使用--log-output参数:其值可以是file、table、none     ——    --log-output=file

    注:这个配置只是配置了日志的输出目的地,但是并没有启用日志

    2.如何启动日志:

    a.启动常规日志:--log

    b.启动出错日志:--log-error

    c.启动慢查询日志:--log-show-queries

    d.启用二进制日志:--log-bin  ——  使用--max-binlog-size参数来控制单个日志的最大长度,超过长度后按顺序创建

                                                        ——  使用--binlog-format参数来控制二进制日志的格式:支持的值有statement、Row、mixed

    e.启用中继日志:--relay-log  —— 默认文件名:Hostname-relay-bin.00001

    注:Unix默认不创建出错日志,而是直接将错误信息等发送到控制台

    3.日志的存放与mysql的启动方式:

    Unix:

    a.使用mysqld启动,此时可以不配置日志文件名,默认采用hostname.err

    b.使用mysqld_safe启动:此时必须指定日志文件名

    c.使用mysql.server启动:本质是调用了mysql_safe的脚步

    Windows:

    1.普通命令行启动

    2.将mysql作为服务启动

    日志文件到底存储在哪?

    因为在配置日志选项的时候,有两种方式:一、绝对路径,二、相对路径

    如果使用相对路径,则会根据不同的情况产生多种效果

    a.在mysql5.1.11版本之前:

    使用mysqld的方式启动mysql,把配置的文件名解释为:相对于数据目录而言

    使用mysql_safe方式启动mysql,把配置的文件名解释为:相对调用该脚本时所在的子目录——结果是,可能日志文件被存储在多个地方(多次在不同目录下启动)

    b.在5.1.11版本之后:

    无论以哪种方式启动,文件都存储在相对数据目录下

    注:如果登录用户对mysql的日志文件没有写的权限,那么在启动mysql时,将会发生异常,但是不会被写入到错误日志

    4.慢查询日志相关的配置和解释说明:

    在mysql5.1.21之前,慢查询检查规则的默认值是10,单位是秒,其中最小值是1,且只接受整数

    在mysql5.1.21之后,慢查询检查规则的最小值变成了0,且可以带1位小数,并且慢查询日志还必须检查参数--min-examined-row-limit参数(default=0),才能写入慢查询日志,

    从mysql5.1.6版本开始,如果把慢查询信息写入数据库表,那么查询时间的小数部分将会被舍掉

    注:

    慢查询文件的查看方式:

    慢查询日志和中继日志都是以二进制的方式存储,可以使用mysqlbinlog工具以文本形式打开

    如何利用慢查询日志:

    在SQL优化时,可以通过——-log-queries-not-using-indexes参数,将没有使用索引的查询记入慢查询日志

    如果再使用--log-show-admin-statements选项,服务器会把“慢”的系统管理语句也记入慢查询日志,如:analyze table, alter table等

    5.二进制日志的作用:集群、复制

    二进制日志是用来记载insert、update、delete的事件,它的核心作用是用于主库到从库的复制,二进制日志文件可以采用mysqlbinlog打开,以文本的格式显示

    二进制日志会按照事件执行完成的顺序的先后来存储,而不是执行的顺序,如果启用了事务,那么只有事务被成功的提交,这些操作才会被记录,在写入二进制文件之前,这些事件都是被保存在缓存中,如果事务发生了回滚,那么将不记录任何日志。

    注:如果事务对非事务型数据表进行了修改,那么这些修改是无法回滚的,此时,事务虽然被回滚,但是针对于数据表的修改还是会保存在二进制日志文件中

    6.中继日志的作用

    中继日志是从服务器把来自主服务器的事件接收的同时再写入中继日志,此时日志的接收和执行将会启用2个线程分别去执行,一个是IO线程负责接收和写入中继日志,一个sql线程负责执行

    最新回复(0)