深入理解mysql日志(mysql 重要日志文件汇总)
深入理解mysql日志
mysql 重要日志文件汇总作者:丁仪
来源:https://chengxuzhixin.com/blog/post/mysql_zhong_yao_ri_zhi_wen_jian_zong_jie.html
日志是所有应用的重要数据,MySQL 也有错误日志、查询日志、慢查询日志、事务日志等。本文简单总结下各种日志,以备查阅。
二进制日志 binlog
二进制日志 binlog 用于记录数据库执行的写入性操作(不包括查询)信息,以二进制的形式保存在磁盘中。使用任何存储引擎的 mysql 数据库都会记录 binlog 日志。在 binlog 中记录的是逻辑日志,也就是 SQL 语句。SQL 语句执行后,binlog 追加到日志文件中。可以设置 binlog 文件大小,超过大小后,自动创建新的文件。
binlog 有三种格式,分别为 STATMENT、ROW 和 MIXED。
- STATMENT:把会修改数据的 sql 语句记录到 binlog 中;是 MySQL 5.7.7 之前的默认格式;
- ROW:不记录每条 sql 语句的上下文信息,仅记录哪条数据被修改了;是 MySQL 5.7.7之后的默认格式;
- MIXED:基于 STATMENT 和 ROW 两种模式的混合复制,一般使用 STATEMENT 模式,对于无法复制的操作使用 ROW 模式;
在实际应用中,binlog 主要用于主从复制和数据恢复。主从复制是指在 master 机器开启 binlog,通过某种方式把 binlog 发送给 slave 机器,slave 机器根据 binlog 内容进行数据操作,从而保证主从数据一致性。另外,通过使用 mysqlbinlog 工具可以从 binlog 恢复数据。
在 MySQL 5.7 之后,内置默认引擎已经变更为 InnoDB 引擎。 InnoDB 引擎在处理事务时,可以设置日志写入磁盘的时机,默认情况下是每次 commit 时写入磁盘。也可以通过 sync_binlog 参数设置成系统自动判断或每 N 个事务写入一次。
查询日志
查询日志记录了所有数据库请求的信息。无论这些请求是否得到了正确的执行。开启之后对性能有比较大的影响,因此使用不多。
慢查询日志
慢查询日志用来记录执行时间超过某个阈值的语句。执行时间阈值可以通过 long_query_time 来设置,默认是 10 秒。慢查询日志需要手动开启,对性能有一些影响,一般不建议开启。慢查询日志支持将记录写入文件,也支持写入数据库表。
事务日志 redo log
事务的四大特性之一是持久性。因此事务成功后,数据库的修改永久保存,不能因为任何原因而回到原来的状态。redo log 是 InnoDB 引擎层实现的日志,并不是所有引擎都有,用来记录事务对数据页的修改,可以在崩溃时用于恢复数据。redo log 包括内存中的日志缓冲和磁盘上的日志文件。执行 SQL 语句后,先写入日志缓冲,后续再一次性把多条缓冲写入文件。
在 InnoDB 中,数据页也会刷盘,redo log 存在的意义主要就是降低对数据页刷盘的要求。数据页的变更,redo log 没有必要全部保存。如果数据页刷盘比 redo log 快,则 redo log 的记录对于数据恢复意义不大;如果数据页刷盘比 redo log 慢,则 redo log 中比数据页快的部分可以用来快速恢复数据。因此 redo log 日志文件大小是固定的,当写到结尾时,会回到开头循环写日志。
事务日志 undo log
事务的四大特性之一是原子性。对数据库的一系列操作,要么全部成功,要么全部失败,不允许部分成功部分失败。因此,需要记录数据的逻辑变化。原子性通过 undo log 来实现,比如事务中执行一条 insert 语句,undo log 就会记录一条 delete 语句;事务中执行一条 update 语句,undo log 就会记录一条相反的 update 语句。这样在事务失败时,就可以通过 undo log 来回滚到事务之前的状态。
以上就是mysql 重要日志文件汇总的详细内容,更多关于MySQL 日志文件的资料请关注开心学习网其它相关文章!
原文链接:https://www.cnblogs.com/chengxuzhixin/p/14022950.html?utm_source=tuicool&utm_medium=referral
- mysql索引分几种(MySQL 覆盖索引的优点)
- mysqlexplain各个字段作用(MySQL EXPLAIN语句的使用示例)
- mysql演示事务提交(MySQL找出未提交事务的SQL实例浅析)
- 停止mysql服务命令(windows下实现定时重启Apache与MySQL方法)
- mysql建立索引的主要目的(浅谈Mysql哪些字段适合建立索引)
- mysql8.0.16安装步骤图解(mysql 8.0.22 安装配置图文教程)
- mysql字符类型长度限制
- python与mysql的联系(MySQL和Python交互的示例)
- mysql的字符串截取函数(MySQL实现字符串的拼接,截取,替换,查找位置的操作)
- mysql主从复制忽略问题(MySQL复制问题的三个参数分析)
- mysql的常见优化(详解GaussDB for MySQL性能优化)
- mysql什么是慢查询(MySQL慢查询的坑)
- mysql 安装阿里云(详解如何在阿里云服务器安装Mysql数据库)
- 如何让mysql强制设置复杂的密码
- mysql主机双向复制配置(浅析MySQL并行复制)
- netcore连什么数据库好(.Net Core导入千万级数据至Mysql的步骤)
- 白龙马的改编学生版,快来看看(白龙马的改编学生版)
- 萌娃唱《白龙马》走红,那生动的小表情,网友直呼 简直是戏精(萌娃唱白龙马走红)
- 朱鹤松被不断认可,凤凰传奇玲花喊话岳云鹏,索要老朱演出门票(朱鹤松被不断认可)
- 元宵晚会槽点多,芒果台上来就假唱,岳云鹏不说相声改评书了(元宵晚会槽点多)
- 岳云鹏跟凤凰传奇谈心,说出了人生中最重要的三个人,这才成功(岳云鹏跟凤凰传奇谈心)
- 爱情可以当饭吃吗(爱情能当饭吃吗)
热门推荐
- 修改svn服务器地址
- sqlserver日志目录是否过大(SQL Server利用sp_spaceused如何查看表记录存在不准确的情况)
- udp 常用端口(UDP DUP超时UPD端口状态检测代码示例)
- python变量指向讲解(详解python中init方法和随机数方法)
- mysql 5.5.27 winx64安装配置方法图文教程(mysql 5.5.27 winx64安装配置方法图文教程)
- 小程序实现购物车功能前后端代码(小程序实现购物车完整版)
- net coredocker基础镜像(Docker 部署net5程序实现跨平台功能)
- javascript作用域实例(JavaScript defineProperty如何实现属性劫持)
- laravel5.1获取数据(laravel5表单唯一验证的实例代码)
- jquery修改带有!important的样式
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9