(四)mysql常用命令之日志文件

  • 日志文件概述
    日志文件记录了影响mysql数据库的各种类型活动。

  • 错误日志
    错误日志文件对mysql的启动,运行,关闭过程进行了记录。
    在这里插入图片描述
    我们首先检索到log_error文件的位置,然后我们去查看这个日志文件的信息。
    在这里插入图片描述
    通过cat 命令查看错误日志文件的内容

  • 慢查询日志
    慢查询日志是用来记录一些需要优化的sql语句的,通过一些参数来控制,不满足参数的将记 录到慢查询日志中。
    在这里插入图片描述
    long_query_time这个参数就是用来限定的,单位是微妙,目前是10s,也就是所有超过这个时间的sql语句将会被记录到慢查询日志文件中
    在这里插入图片描述
    慢查询日志功能是默认关闭的,需要手动开启,通过slow_query_log参数
    慢查询日志文件的保存位置通过slow_query_log_file来指定,默认名称是host-slow.log
    在这里插入图片描述
    通过修改slow_query_log=on开启慢日志功能,然后才会创建慢日志文件ubuntu-slow.log
    在这里插入图片描述
    log_queries_not_using_indexes这个参数默认是关闭的,如果打开,那么不仅运行超过时间的sql会被记录下来,同时没有使用索引的sql也会被记录下来
    在这里插入图片描述
    log_throttle_queries_not_using_indexes这个参数用来设置没有使用索引的sql语句每分钟记录的次数(0表示不做限制),因为在实际开发当中如果有一条sql未使用到索引,那么慢日志文件将会变得非常大如果频繁使用这个sql操作的话。
    在这里插入图片描述
    mysqldumpslow这个命令是个工具类型的命令,可以帮助我们通过一些参数来方便查找我们想要查找的的一些慢日志中的sql,方便我们检索慢日志文件
    在这里插入图片描述
    log_output这个参数用来指定慢日志文件输出的格式,默认是file格式的,也可以指定为table格式的,将会创建一张slow_log表来存储慢日志文件信息(可以两种方式同时使用)。

  • 查询日志
    查询日志记录了所有对mysql的请求的信息,无论这些请求是否得到正确的执行
    在这里插入图片描述
    general_log_file就是查询日志文件的文件位置,我们看到general_log就是说目前这个功能是关闭的
    在这里插入图片描述在这里插入图片描述
    看到图一,我们打开了这个查询日志的功能,然后我们对数据库发生了查看某些参数文件值的操作,看到图二,这个查询日志文件已经可以捕捉到了,并且记录了下来(注意:所有对mysql的请求)
    在这里插入图片描述
    看到我执行了一条错误的请求 select * 也被记录下来了
    在这里插入图片描述
    和慢日志文件一样,也会有一张对应的表来记录对应的查询日志表,名称mysql下的general_log表

  • 二进制日志
    binary log 记录了对mysql数据库执行更改的所有操作,但是不包括select和show类操作,因为这类操作不会对数据本身修改,如果修改操作没有修改数据库,那么也会记录(记录修改操作日志)。
    在这里插入图片描述
    默认情况下,二进制日志也是关闭的,需要我们手动开启
    在这里插入图片描述
    由于log-bin是一个静态变量,也就是说在mgsql启动后就不可以更改,所以需要在my.cnf中配置,
    配置以 log-bin=/path/filename形式,就相当于log_bin=on ,log_bin_basename=/path/filename,
    log_bin_index=/path/filename.index
    在这里插入图片描述
    启动mysql服务,在mysql的datadir目录下就会创建一个binlog.000001和binlog.index文件,第一个文件表示的是所有修改操作的数据,第二个文件是二进制的索引文件,里面存放所有二进制日志的文件名称
    在这里插入图片描述
    我们看到索引文件内容我们就应该明白其作用了
    在这里插入图片描述
    max_binlog_size表示单个二进制日志文件的最大大小104857600(100M)如果超过该值,那么将会产生一个新的二进制日志文件,文件名为后缀名+1
    在这里插入图片描述
    binlog_cache_size表示二进制文件的缓存大小,因为一些修改操作的日志是不能直接写到二进制日志文件中的,比如支持事务的操作,必须等事务提交才能写到日志中,默认大小是32k,也就是说只要你开启一个事务,那么就会分配给你32k,所以这个值不能设置太大。
    在这里插入图片描述
    那么还有一个问题就是,这些修改操作是以怎样的存放的,那么这个就可以设置binlog_format来指定二进制日志文件的格式,一共有三种格式:statement(binlog存储执行的sql),row(执行改变的整个过程),mixed(会前两者混合使用)
    a.row
    在这里插入图片描述
    我将id=1的记录的name字段改为了“hr5”,并且提交commit(如果没有提交将不会在日志中看到)
    在这里插入图片描述
    sudo mysqlbinlog --no-defaults -v binlog.000002 命令 我看到了上面的日志内容,日志中记录了你在一个事务中的操作流程的整个过程。这样就可以通过binlog文件来实现 恢复和主从复制的功能了,从节点接收到主节点的binlog,然后照着执行,就可以实现数据和主节点一致了
    2.statement
    在这里插入图片描述
    修改二进制日志的记录格式为statement
    在这里插入图片描述
    修改id=3的记录的name字段,并且提交
    在这里插入图片描述
    sudo mysqlbinlog --no-defaults -v binlog.000002 我们看到记录日志格式已经发生改变了,记录的就是一条sql语句,不会有变更的整个过程的记录

猜你喜欢

转载自blog.csdn.net/weixin_38312719/article/details/89308366