阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

MySQL日志文件详述

227次阅读
没有评论

共计 1947 个字符,预计需要花费 5 分钟才能阅读完成。

错误日志

        错误日志不用多说,记录了 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 时肯定会写入重做日志文件,知识有这个动作。当数据库宕机而服务器并没有宕机的情况下,因为此时未写入磁盘的事务保存在文件系统缓存中,当恢复时同样保证数据不丢失。

本文永久更新链接地址 :http://www.linuxidc.com/Linux/2017-08/146217.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-22发表,共计1947字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中