一步一步学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时肯定会写入重做日志文件,知识有这个动作。当数据库宕机而服务器并没有宕机的情况下,因为此时未写入磁盘的事务保存在文件系统缓存中,当恢复时同样保证数据不丢失。
一步一步学MySQL-日志文件的更多相关文章
- lnmp vps服务器删除mysql日志文件三种方法
我在上一篇文章介绍了著名的LNMP主机一键安装工具,对比了军哥lnmp和AMH主机的差别,由于AMH拥有用户后台界面,易于新手操作,值得推荐. 但是,上周末我网站宕机,收到DNSPOD发来了宕机提醒, ...
- (3.12)mysql基础深入——mysql日志文件/其他文件(socket/pid/表结构/Innodb)
(3.12)mysql基础深入——mysql日志文件/其他文件(socket/pid/表结构/Innodb) 关键词:mysql日志文件,mysqldumpslow分析工具 目录:日志文件的分类 1. ...
- Linux下自动清除MySQL日志文件
MySQL运行过程中会生成大量的日志文件,占用不少空间,修改my.cnf文件配置bin-log过期时间,在Linux下自动清除MySQL日志文件 [mysqld] expire-logs-days= ...
- 浅谈MySQL日志文件|手撕MySQL|对线面试官
关注微信公众号[程序员白泽],进入白泽的知识分享星球 前言 上周五面试了字节的第三面,深感数据库知识的重要,我也意识到在平时的学习中,自己对于数据库的学习较为薄弱.甚至在有过一定实习经验之后,依旧因为 ...
- mysql日志文件
mysql的数据文件夹里出现mysql-bin日志文件,通过my.cnf注释掉log后,是否可以删除了? 参考 http://database.51cto.com/art/201107/278988. ...
- MYSQL 日志文件路径错误 1067错误
场景再现: ---------------------------------------------------------------------------------------------- ...
- MySQL日志文件之错误日志和慢查询日志详解
今天天气又开始变得很热了,虽然很热很浮躁,但是不能不学习,我在北京向各位问好.今天给大家分享一点关于数据库日志方面的东西,因为日志不仅讨厌而且还很重要,在开发中时常免不了与它的亲密接触,就在前几天公司 ...
- mysql 日志文件mysql-bin文件清除方法,和mysql-bin相关文件的配置
默认情况下mysql会一直保留mysql-bin文件,这样到一定时候,磁盘可能会被撑满,这时候是否可以删除这些文件呢,是否可以安全删除,是个问题. 首先要说明一下,这些文件都是mysql的日志文件,如 ...
- mysql日志文件相关的配置【2】
1.二进制日志是什么? mysql 的二进制日志用于记录数据库上做的变更. 2.二进制日志什么时间写到磁盘 1.总的来说二进制日志会在释放锁之前就写入磁盘.也就是说在commit完成之前:client ...
- mysql日志文件相关的配置【1】
1.log_output=[file | table | none ] 这个参数指定general_log &slow_query_log 的输出目标.可以是table | file | no ...
随机推荐
- AngularJs学习笔记0——前言
距离上次写博客有很长时间了,这段时间中也一直想坚持写博客,但是迟迟未动,一方面是因为刚换工作并适应新的环境导致工作比较忙碌,一直没有抽出时间来,其实说白了就是给自己的懒惰找借口,但是本人在园子里也有一 ...
- 这可能是最low的发布dotnet core站点到centos7
前言 不得不说:我在chrome上写了好长一段,贴了23张图,然后一个crash..我想说我电脑上的chrome已经crash太多次了 以后一定要搞离线编辑的. 正文 什么是.net core,bal ...
- 【Android Developers Training】 64. 绘制形状
注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...
- php随机获取验证码
<?php $yzm = ""; for($i=0;$i<5;$i++) { $a = rand(0,9); //0-9随机数 $yzm.= $a; } echo jo ...
- 一张图告诉你angular2所有知识点
忙活了半年,从angular2.0到现在angular4.2.从没AOT到有AOT.我想说,angular2的学习曲线真的有点陡峭.只能说,angular2是一个比较完整的框架,框架就是这样,一大堆条 ...
- 使用JS开发桌面端应用程序NW.js-2-开发问题小记
前言 本文为开发nw中遇到的各种问题,仅以记录供备忘以及遇到相同问题的人的一点点解决思路. 1. package.json中的window字段无效 原因:package.json中的window字段, ...
- 增强for循环赋值
增强for循环赋值 代码如下: double[] testList01 = new double[5]; java.util.Scanner sc = new java.util.Scanner(Sy ...
- Java 9 揭秘(12. Process API 更新)
Tips 做一个终身学习的人. 在本章中,主要介绍以下内容: Process API是什么 如何创建本地进程 如何获取新进程的信息 如何获取当前进程的信息 如何获取所有系统进程的信息 如何设置创建,查 ...
- Html table 合并单元格
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- simpleImageTool又纯java图片水印、缩放工具
simpleImageTool又一个简单.好用的图片格式转换.缩放水印叠加等功能的纯Java图片工具库. simpleImageTool的由来,近期需要用到图片处理,通过网上的图片流直接进行缩放水印叠 ...