日志是所有应用的重要数据,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 来回滚到事务之前的状态。

微.信.搜.一.搜.程序之心,每周一三五原创更新。

binlog日志_mysql 重要日志文件总结相关推荐

  1. binlog日志_MySQL三大日志binlog、redo log和undo log

    点击蓝色"JavaKeeper"关注我哟 加个"星标",一起成长,做牛逼闪闪的技术人 Keeper导读:日志是mysql数据库的重要组成部分,记录着数据库运行期 ...

  2. thinkphp mysql日志_MySQL的日志基础知识及基本操作学习教程

    MySQL日志主要包含:错误日志.查询日志.慢查询日志.事务日志.二进制日志: 日志是mysql数据库的重要组成部分.日志文件中记录着mysql数据库运行期间发生的变化:也就是说用来记录mysql数据 ...

  3. mysql通用查询日志_MySQL通用查询日志(GeneralQueryLog)_MySQL

    同大多数关系型数据库一样,日志文件是MySQL数据库的重要组成部分.MySQL有几种不同的日志文件,通常包括错误日志文件,二进制日志,通用日志,慢查询日志,等等.这些日志可以帮助我们定位mysqld内 ...

  4. mysql的事务日志_MySQL 事务日志

    重做日志(Redo log) 重做日志(Redo log),也叫做前滚日志,存放在如下位置,轮询使用,记录着内存中数据页的变化,在事务 ACID 过程中,主要实现的是 D(Durability)的作用 ...

  5. 查看mysql更新日志_mysql 的日志查看

    mysql有以下几种日志: 错误日志: -log-err 查询日志: -log 慢查询日志: -log-slow-queries 更新日志: -log-update 二进制日志: -log-bin 默 ...

  6. mysql 错误 日志_MySQL 错误日志(Error Log)

    同大多数关系型数据库一样,日志文件是MySQL数据库的重要组成部分.MySQL有几种不同的日志文件,通常包括错误日志文件,二进制日志,通用日志,慢查询日志,等等.这些日志可以帮助我们定义mysqld内 ...

  7. mysql重做日志_MySQL重做日志相关

    Ⅰ.事务的实现 这里我们先抛出答案,通过答案再展开分析 特性实现 A(原子性) redo C(一致性) undo I(隔离性) lock D(持久性) redo/undo 本节针对redo展开分析 Ⅱ ...

  8. mysql prepare 日志_MySQL慢日志slow_log为何会出现Prepare与Binlog Dump-阿里云开发者社区...

    MySQL慢日志为何会出现Prepare与Binlog Dump 问题现象 某客户的RDS数据库的某个时间段(时间点),慢日志记录出现大量的Prepare操作以及零星的Binlog Dump操作,如下 ...

  9. 订阅mysql的二进制日志_MySQL二进制日志

    一.二进制日志(The Binary Log) 1.简介 包含所有更新了的数据或者已经潜在更新了的数据(比如一条没有匹配任何行的delete语句) 包含所有更新语句执行时间的信息 不记录没有修改数据的 ...

最新文章

  1. 如何用计算机弹逆战6,逆战星光弹夹使用方法介绍 轻松玩转星光弹
  2. ios 登录 java 后台,IOS苹果登录sign in with apple后端校验
  3. 连接端口 配置hive_Hadoop大数据平台数据仓库Hive管理操作
  4. MyBatis入门实例-包括实体类与数据库字段对应CLOB字段处理
  5. vuejs之【router-link】大全(二)
  6. pandas如何统计所有列的空值,并转化为list?
  7. winform combobox选择后_后驱车真的比前驱车更加高级吗?涨知识了!
  8. Linux---进程调度相关命令解析
  9. Window系统下搭建GIT本地服务器详细教程
  10. react里 MD5加密
  11. Java sychronized关键字总结(一)
  12. c语言fread参数,C语言fread函数
  13. java控制浏览器,java控制夜神访问浏览器
  14. Flutter 修改App的名称和图标
  15. 基于51单片机机械臂控制系统
  16. 开源一款资源分享与下载工具 —— 电驴(eMule)
  17. unity il2cpp 热更实现
  18. HCIP2------BGP1
  19. 手把手系列之四十七—手把手教你做奶白鲫鱼汤
  20. c语言 11 getchar实现大小写字母转换

热门文章

  1. Ubuntu系统opencv4.4 opencv_contribute安装常见问题
  2. 企业如何从 0 到 1 构建整套全链路追踪体系
  3. 阿里巴巴大数据实践:OneData模型实施介绍
  4. 在线视频面试业务融合阿里云,助您找到心仪好工作
  5. 阿里云Kubernetes服务上从零搭建GitLab+Jenkins+GitOps应用发布模型的实践全纪录
  6. SQLServer AlwaysOn在阿里云的前世今生
  7. [新品发布]全球首个百万IOPS云盘来了 阿里云推出超高性能云盘ESSD
  8. 一张图看懂阿里云网络产品【四】NAT网关
  9. 从达标到卓越 —— API 设计之道
  10. 如何应对云原生之旅中的安全挑战?