一步一步学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 ...
随机推荐
- su与sudo命令的区别
由于su 对切换到超级权限用户root后,权限的无限制性,所以su并不能担任多个管理员所管理的系统. 如果用su 来切换到超级用户来管理系统,也不能明确哪些工作是由哪个管理员进行的操作. 特别是对于服 ...
- 【LeetCode】136. Single Number
题目: Given an array of integers, every element appears twice except for one. Find that single one. No ...
- Android端恶意锁屏勒索应用分析
一.前言 5月12日,一场全球性互联网灾难悄然而至,一款名为WannaCRY的PC端恶意勒索软件利用NSA泄漏的危险漏洞“永恒之蓝”,给100多个国家和地区10万台电脑造成了巨大的损失.到2017年为 ...
- KBEngine简单RPG-Demo源码解析(3)
十四:在世界中投放NPC/MonsterSpace的cell创建完毕之后, 引擎会调用base上的Space实体, 告知已经获得了cell(onGetCell),那么我们确认cell部分创建好了之后就 ...
- Python中字典和集合
Python中字典和集合 映射类型: 表示一个任意对象的集合,且可以通过另一个几乎是任意键值的集合进行索引 与序列不同,映射是无序的,通过键进行索引 任何不可变对象都可用作字典的键,如字符串.数字.元 ...
- [图形学] Chp17 OpenGL光照和表面绘制函数
这章学了基本光照模型,物体的显示受到以下效果影响:全局环境光,点光源(环境光漫反射分量,点光源漫反射分量,点光源镜面反射分量),材质系数(漫反射系数,镜面反射系数),自身发光,雾气效果等.其中点光源有 ...
- Java开源博客My-Blog之docker组件化修改
前言 5月13号上线了自己的个人博客,<Docker+SpringBoot+Mybatis+thymeleaf的Java博客系统开源啦>,紧接着也在github上开源了博客的代码,到现在为 ...
- MySQL常用基本命令
启动MySQL /etc/init.d/mysqld start 优雅的关闭数据库的方法 1:使用MySQLadmin mysqladmin -uroot -p123456 shutdown 2:使用 ...
- Centos 6.5 安装python3.6
废话不多说,直接上步骤 wget https://www.python.org/ftp/python/3.6.2/Python-3.6.2rc1.tgz 进入 https://www.python.o ...
- JAVA的高并发编程
一.多线程的基本知识 1.1进程与线程的介绍 程序运行时在内存中分配自己独立的运行空间,就是进程 线程:它是位于进程中,负责当前进程中的某个具备独立运行资格的空间. 进程是负责整个程序的运行,而线程是 ...