zoukankan      html  css  js  c++  java
  • 一步一步学MySQL-日志文件

    错误日志

             错误日志不用多说,记录了mysql运行过程中的错误信息,当出现问题时,我们可以通过错误日志查找线索。

    慢查询日志

             可以通过参数long_query_time来设置时间,当sql语句执行超过指定的时间,就会被记录下来,用来进行sql调优。

             还有一个参数log_queries_not_using_indexs,如果运行的sql语句没有使用索引,就会记录下来。但是不能一直这样记录,会导致文件过大,索引可以通过log_throttle_queries_not_using_indexes来表示每分钟允许记录到slow log的未使用索引的SQL语句的次数。默认为0,表示没有限制。如果日志记录到文件中,可以使用mysqldumpslow命令来进行筛选。

             慢查询日志可以输出到文件中,也可以输出到表中。可以通过log_output参数指定慢查询日志输出到哪里。

             在慢查询日志中都记录了什么信息,可以通过slow_query_type进行控制。

             0表示不将SQL语句记录到slow log。

             1 表示根据运行时间将SQL语句记录到slow log。

             2 表示根据逻辑IO次数将SQL语句记录到slow log。

             3 表示根据运行时间和逻辑IO次数将SQL语句记录到slow log。

    binlog日志

             记录了对数据库除了查询的所有操作。可以用来数据恢复、主从复制和判断数据库是否被攻击审计。

    sync_binlog参数

             binlog日志并不是每次写的时候都同步到磁盘。因此当数据库发生宕机的时候,可能会有一部分数据没有日志中。会跟复制和恢复带来问题。sync_binlog表示每写缓冲多少次就同步到磁盘。如果设置位1 即表示每写一次缓冲就把数据同步到磁盘。但是仍然存在问题,如果事务刚刚把数据写入日志,但是还没有执行的情况下宕机。数据库重启后会进行回滚,但是写入binlog的日志不能回滚。可以通过innodb_support_xa=1来解决这个问题。

    binlog_format参数

             该参数可以设置的值有STATEMENT、ROW、MIXED。

      1、  STATEMENT格式的日志,只记录sql语句

      2、  ROW格式的日志,不是记录SQL语句,而是记录记录表的行更改情况。

      3、  MIXED格式的日志,根据情况决定使用STATEMENT还是ROW格式记录日志。

      MySQL数据库的事务格式离别为REPEATABLE READ,跟binlog_format是有关系的,如果设置为READ COMMITED的事务隔离级别,会出现类似丢失更新的现象,从而出现主动数据不一致。如果binlog_format采用的是ROW格式的记录,就可以将事务隔离级别调整为READ COMMITED来提高性能。

    查询日志

             记录所有的对数据库的请求,一般不开启。    

    重做日志

             该日志文件属于Innodb存储引擎,记录了Innodb存储引擎的食物日志,直观重要。当执行事务失败时,该日志就能派上用场。

             每个Innodb存储引擎至少有两个日志文件组,每个文件组下面至少有两个重做日志。

          参数

             Innodb_log-file_size

                       表示每个重做日志的大小。

             Innodb_log_files_in_group

                       表示每个日志文件组有几个日志,最少有两个,默认为2个。

             Innodb_mirrored_log_groups

                       镜像,为了高可用设计。如果进行了磁盘阵列,可以不设置。

             Innodb_log_group_home_dir

                       日志文件存放的位置,默认为”./”。

             Innodb_flush_log_at_trx_commit

                       当值为0时,代表当提交事务时,并不将事务的重做日志写入磁盘上的日志文件,而是等待主线程每秒的刷新。

                       当值为1时,表示执行commit时将重做日志缓冲同步写到磁盘,即伴有fsync的调用。当事务提交时,必须保证事务已经写入重做日志文件。当数据库宕机时,可以通过重做日志文件恢复,并保证可以恢复已经提交的事务。

                       当值为2时,表示将重做日志异步写到磁盘。即写到文件系统的缓存中。因此不能完全保证执行commit时肯定会写入重做日志文件,知识有这个动作。当数据库宕机而服务器并没有宕机的情况下,因为此时未写入磁盘的事务保存在文件系统缓存中,当恢复时同样保证数据不丢失。

  • 相关阅读:
    [译文] 实体与值对象到底是不是一回事?
    实现 WebApi 自托管服务宿主于 WinForms 及其交互
    [译文] C# 8 已成旧闻, 向前, 抵达 C# 9!
    [译文] 为什么你在 C# 里总是应该使用 "var" 关键字
    通过设置iis在局域网中访问网页
    windows 10 安装使用kafka
    ASP.NET Core 2.1 中的 HttpClientFactory (Part 4) 整合Polly实现瞬时故障处理
    ASP.NET Core 2.1 中的 HttpClientFactory (Part 3) 使用Handler实现传出请求中间件
    ASP.NET Core 2.1 中的 HttpClientFactory (Part 2) 定义命名化和类型化的客户端
    Asp.net Core 2.0 OpenId Connect Handler缺失Claims?
  • 原文地址:https://www.cnblogs.com/fhhk/p/7350684.html
Copyright © 2011-2022 走看看