mysql之日志
我是李福春,我在准备面试,今天的题目是:
mysql的redolog和binlog有什么区别?
答: 如下面的表格,
redolog vs binlog
然后我们扩展一下,因为日志主要是记录的修改日志,分别加深分析一下:
redolog
redolog是innodb存储引擎特有的物理日志,记录的是数据页做了什么改动。
它的存储空间是固定的,类似一个圆环。日志空间写完,需要把相关的操作执行,数据刷到磁盘上释放空间。
redolog可以有效保证mysql的crash-safe; 即mysql系统故障重启,也可以从redolog中恢复;
一般把innodb_flush_log_at_trx_commit=1,即设置redolog每次事务提交日志落盘,可以更有效的保证crash-safe
binlog
是一种mysql-server层的逻辑修改日志,有两种格式:
1,statement格式,记录的是sql;
2, row格式,记录了两行,更新前和更新后的结果;
为了保证系统可以从奔溃状态恢复,设置参数 sync_binlog=1,即事务提交,binlog落盘;
如何快速恢复mysql:
1,找到最近的备份,恢复到临时库;
2,找到备份的binlog,重放到你需要的时刻。
一条update语句历程
比如有一张表:
user(id int primarykey auto_increment , age int default 0 )engin=innodb ;
执行一条sql语句:
update user set age=age+1 where id=2 ;
那么,这条update语句是如何经过mysql的体系结构和日志文件呢?
1,执行器首先通过存储引擎读接口得到这行数据;(如果内存有则返回,不存在从硬盘中取出放入内存再返回)
2,执行器把这行数据的age+1,然后调用存储引擎的写接口,写入数据到内存;
3,存储引擎把更新操作写入redolog,日志状态为prepare ,告诉执行器事务完成更新操作;
4, 执行器把这个操作写入binlog,日志落盘;
5,执行器提交事务,调用存储日志写到redolog,日志状态为commit,
binlog,redolog都可以表示事务的状态;
两阶段提交:保证了binlog,redolog在系统奔溃重启之后的事务状态的一致;
小结
本篇分析了redolog和binlog的区别。
然后分别介绍了binlog,redolog所处的mysql的体系结构位置,实际运维过程中的配置参数。
最后追踪了一条update语句的执行历程,以及两种日志的写入过程,然后点明两阶段提交是为了保证两种日志的事务一致性。
原创不易,转载请注明出处。
mysql之日志的更多相关文章
- MySQL错误日志总结
MySQL错误日志是记录MySQL 运行过程中较为严重的警告和错误信息,以及MySQL每次启动和关闭的详细信息.错误日志的命名通常为hostname.err.其中,hostname表示服务器主机名. ...
- mysql数据库服务日志
mysql数据库服务日志 ①. 错误日志:error_log ②. 普通日志:general_log ③. 慢查询日志:log-slow-query #有3个参数 分割:.mv .编写定时任务并执行: ...
- mysql 二进制日志后缀数字最大为多少
之前看到mysql二进制日志后面会加一个以数字递增为结尾的后缀,一直在想当尾数到达999999后会发生什么情况,先查了一下官网,对后缀有这样一句介绍:The server creates binary ...
- MySQL慢日志监控脚本实例剖析
公司线上的 MySQL 慢日志,之前一直没有做好监控.趁着上周空闲,我就把监控脚本写了下,今天特地把代码发出来与51博友分享一下. 针对脚本的注解和整体构思,我会放到脚本之后为大家详解. 1 2 3 ...
- MySQL二进制日志的备份和恢复
二进制日志:记录数据库修改的相关操作,作用是即时点回复,主从复制 可以按时间滚动,也可以按大小滚动 server-id:服务器身份标识 一.二进制文件的删除方法,千万不要手动删除 PURGE BINA ...
- mysql 的日志文件
mysql的日志文件 日志文件大致分为 error log, binary log, query log, slow query log, innodb redo log ;如图: 1.error ...
- [转载]mysql慢日志文件分析处理
原文地址:mysql慢日志文件分析处理作者:maxyicha mysql有一个功能就是可以log下来运行的比较慢的sql语句,默认是没有这个log的,为了开启这个功能,要修改my.cnf或者在mysq ...
- ELK监控系统nginx / mysql慢日志
ELK监控系统nginx / mysql慢日志 elasticsearch logstash kibana ELK监控系统nginx日志 1.环境准备 centos6.8_64 mini IP:192 ...
- MySQL 错误日志(Error Log)
同大多数关系型数据库一样,日志文件是MySQL数据库的重要组成部分.MySQL有几种不同的日志文件.通常包括错误日志文件,二进制日志,通用日志,慢查询日志,等等. 这些日志能够帮助我们定位mysqld ...
- Mysql Binlog日志详解
一.Mysql Binlog格式介绍 Mysql binlog日志有三种格式,分别为Statement,MiXED,以及ROW! 1.Statement:每一条会修改数据的sql都会记录在 ...
随机推荐
- Mysql5.7.25安装步骤
安装步骤 在官网下载mysql-5.7.25-winx64.zip压缩包到本地,解压到非中文目录. 列如(D:\Program Files\mysql-5.7.25-winx64). 在环境变量中添加 ...
- springboot框架中集成thymeleaf引擎,使用form表单提交数据,debug结果后台获取不到数据
springboot框架中集成thymeleaf引擎,使用form表单提交数据,debug结果后台获取不到数据 表单html: <form class="form-horizontal ...
- Magisk了解以及简单的模块制作
Magisk,就是刷机经常会需要使用的,也是就是我们说的面具或者脸谱.因为它的logo就是面具或者说脸谱.我们先简单了解一下: XDA上论坛的说明:Magisk - The Universal Sys ...
- HelloWorld系列(一)- 手把手教你做JDK环境变量配置
分下载,配置,验证三个步骤讲解如何进行JDK环境变量配置. 步骤1:首先看配置成功后的效果步骤2:下载,并解压到E:\JDK步骤3:环境变量配置步骤4:Win10 下环境变量Path的配置步骤5:验证 ...
- VUE实现Studio管理后台(三):支持多语言国际化(vue-i18n)
RXEditor的第一版本是英文版,有些朋友看起来觉得不习惯,后来因为惰性,不愿意再修改旧代码加入中文版,这次提前就把这个问题解决了,克服惰性最好的方式,就是想到就尽快去做,避免拖延. 本来计划在界面 ...
- 简单说 用CSS做一个魔方旋转的效果
说明 魔方大家应该是不会陌生的,这次我们来一起用CSS实现一个魔方旋转的特效,先来看看效果图! 解释 我们要做这样的效果,重点在于怎么把6张图片,摆放成魔方的样子,而把它们摆放成魔方的样子,重点在于用 ...
- 痞子衡嵌入式:恩智浦i.MX RTxxx系列MCU启动那些事(6.1)- FlexSPI NOR连接方式大全(RT600)
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是恩智浦i.MX RT600的FlexSPI NOR启动的连接方式. 痞子衡前段时间一鼓作气写完了三篇关于i.MXRT1xxx系列Flex ...
- An incompatible version [1.1.33] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
Springboot项目启动出现如下错误信息 解决办法在此地址:http://archive.apache.org/dist/tomcat/tomcat-connectors/native/1.2.1 ...
- Flutter的盒子约束
由Expanded widget引发的思考 设计稿如下 布局widget分解 很常见的一种布局方式:Column的子widget中包含ListView @override Widget build(B ...
- JS数组遍历方法集合
就让我们在逆战中成长吧,加油武汉,加油自己 1.for循环 使用零时变量将长度存起来,当数组较大时优化效果才会比较明显. var ar1=[2,4,6,8] for(var i=0;i<ar1. ...