当前位置: 首页 > article >正文

MySQL知识点复习 - 常用的日志类型

MySQL中常用的日志类型:

重做日志(redo log)

  • 作用:确保事务的持久性。redo日志记录事务执行后的状态,用来恢复还未写入data file的已成功事务更新的数据。防止在发生故障的时间点,尚有脏页未写入磁盘,再重启mysql服务的时候,根据redo log进行重做,从而达到事务的持久性。
  • 内容:物理格式的日志,记录的是物理数据页面修改的信息,顺序写入redo log file的物理文件中。
  • 什么时候产生:事务开始之后就产生redo log,redo log的落盘并不是根据事务的提交才写入的,而是事务的执行过程中就写入redo log中的。
  • 什么时候释放:对应事务的脏页写入到磁盘当中,redo log的任务就完成了,redo log占用的空间就会被覆盖。

回滚日志(undo log)

  • 作用:保证数据的原子性,保证了事务发生前的数据的一个版本,用于回滚,同时可以提供多版本并发控制下的读(MVCC),也即非锁定读
  • 内容:逻辑格式的日志,在执行undo的时候,仅仅是将数据从逻辑上恢复到事务之前的状态,而不是从物理页面上操作实现的。
  • 什么时候产生:事务开始时,用当前的版本生成undo log,undo log会产生redo来保证undo的可靠性。
  • 什么时候释放:当事务提交之后,会放入待清理的链表中,由purge线程判断是否由其他事务在使用undo段中表的上一个事务之前的版本信息,觉得是否清楚undo log的日志空间。

二进制日志(bin log)

  • 作用:用于复制,从库利用主库上的binlog进行重播,实现主从复制,用于数据库基于时间点的还原
  • 内容:逻辑格式的日志,执行过的事务中的sql语句,包括了执行的sql语句(增删改)反向的信息,也就意味着delete对应着delete本身和其反向的insert;update对应着update执行前后的版本的信息;insert对应着delete和insert本身的信息。因此可以使用binlog实现类似于oracle的闪回功能。
  • 什么时候产生:事务提交的时候一次性将事务中的sql语句按照一定的格式记录到binlog中。所以在启动了bin log的时候,如果在提交一些很大的事务,效率会因此变得较慢。
  • 什么时候释放:通过配置在指定的日期里自动删除

二进制日志的作用是用来还原数据库的,与redolog是类似的,但本质不同

  • 作用不同:redo log是保证事务的的持久性,是事务层面的,binlog具有还原功能,是数据层面的。
  • 内容不同:redo log是物理日志,binlog是逻辑日志

错误日志(error log)

  • 记录启动和停止以及服务器中发生的错误信息

慢查询日志(general slow log)

  • 慢日志记录执行时间过长和没有使用索引的查询语句,报错select、update、delete以及insert语句,慢日志只会记录执行成功的语句。

一般日志(general query log)

  • 记录了服务器接收到的每一个查询或是命令,无论这些查询或是命令是否正确甚至是否包含语法错误

中继日志(relay log)

relay log只在主从服务器的架构中的从服务器中存在(是我这种小菜鸟无法接触的苦),从服务器为了和主服务器保持一直就要读取二进制日志(bin log)的内容然后把这些信息存到本地的日志文件去,这个存在本地的日志文件就是relay log。

因为格式跟binlog的日志文件相同,因此也是可以用 mysqlbinlog进行读取。

主要充当一个缓冲的作用,因为主要是主从复制,线程先将主服务器的binlog先存到relay log里面去,这样就可以不用等完全复制完再发送下一个bin log了(队列的思想处处都有,真的优秀这些轮子)


http://www.kler.cn/a/322868.html

相关文章:

  • 中信建投张青:以金融巨擘之姿,铸就公益慈善新篇章
  • 躺平成长-人工智能进行编程-(12)
  • 【Mysql】Mysql的多表查询---多表联合查询(上)
  • MySQL的游标和While循环的详细对比
  • RabbitMQ教程:路由(Routing)(四)
  • 网络安全SQL初步注入2
  • 浅谈Java之多线程锁处理
  • kali linux crunch工具使用 -- 生成字典
  • 【常见框架漏洞】ThinkPHP、struts2、Spring、Shiro
  • 【数据结构】堆(Heap)详解
  • 前端框架的选择与考量:一场技术的盛宴
  • [Doc][ROS2]订阅发布、服务客户端区别
  • django drf 自动注册路由
  • Leetcode尊享面试100题-252.会议室
  • 产品推介——SOP4 随机相位可控硅光耦KLM305X
  • Docker Init 实战详解:从入门到精通
  • 前端练习总结(1)
  • 选择、冒泡、插入排序
  • 【Redis 源码】2项目结构说明
  • c语言中的杨氏矩阵的介绍以及元素查找的方法
  • Spring Boot 中实现任务后台处理的几种常见方式
  • 【笔记】自动驾驶预测与决策规划_Part4_时空联合规划
  • 数据结构及基本算法
  • LeetCode 2266. 统计打字方案数
  • UE4_Niagara基础实例—使用自定义模块二
  • DataLight(V1.4.5) 版本更新,新增 Ranger、Solr