MySQL的两种日志类型,redo log,binlog
文章内容学习:极客时间-林晓彬老师-MySQL实战45讲 整理而得
我们知道MySQL数据库在发生意外宕机的情况下,可以将数据恢复到历史的某个时间点,能实现这个功能依靠的是日志,MySQL提供两种类型的日志,也是两个模块中的日志,分别是存储引擎中的日志(redo log(重做日志))和Server层的日志(binlog(归档日志))
redo log
MySQL在执行一条更新语句的时候,需要更新内存中的数据,然后在更新磁盘中的数据,这里运用到了WAL技术,全称是Write-Ahead Logging
这里的关键点就是先写个更新日志,然后把内存中的数据给更新,等到系统有空闲时间了,再更新磁盘上的数据
InnoDB的redo log是物理日志,记录了在某个数据页做了什么修改,并且文件是固定大小,可以配置一组为4个日志文件,每个文件大小为1G,那么总计可以存储4G的日志。因为日志大小是固定的,所以存满了需要从第一个日志文件开始循环继续写。有了redo log InnoDB就可以保证数据库发生异常宕机重启后,之前提交的数据都不会丢失,这个能力称之为crash-safe
binlog
binlog是Server的日志,记录的是逻辑日志,比如"给ID=2的一行数据的C字段更新为1",并且日志是追加写入的,文件到了指定大写会自动切割换到下一个文件,不会覆盖以前的文件,这一点不像redo log。
用于调节日志的参数
innodb_flush_log_at_trx_commit 这个参数设置为1,表示每次事务的redo log日志都直接持久化到磁盘
sync_binlog 这个参数设置为1,表示每次事务binlog都持久化到磁盘
MySQL的两种日志类型,redo log,binlog的更多相关文章
- MySQL中的重做日志(redo log),回滚日志(undo log),以及二进制日志(binlog)的简单总结
MySQL中有六种日志文件,分别是:重做日志(redo log).回滚日志(undo log).二进制日志(binlog).错误日志(errorlog).慢查询日志(slow query log).一 ...
- MySQL重做日志(redo log)
前面介绍了三种日志:error log.slow log.binlog,这三种都是 Server 层的.今天的 redo log 是 InnoDB引擎专有的日志文件. 为什么要有 redo log 用 ...
- MySQL更新数据时,日志(redo log、binlog)执行流程
1:背景 项目需要做Es和数据库的同步,而手动在代码中进行数据同步又是Es的一些不必要的数据同步操作和业务逻辑耦合,所以使用的了读取mysql的binlog日志的方式进行同步Es的数据. 问题1:根据 ...
- InnoDB事务日志(redo log 和 undo log)详解
数据库通常借助日志来实现事务,常见的有undo log.redo log,undo/redo log都能保证事务特性,undolog实现事务原子性,redolog实现事务的持久性. 为了最大程度避免数 ...
- 日志:Redo Log 和 Undo Log
本篇文章主要介绍 Redo Log 和 Undo Log: 利用 Redo Log 和 Undo Log 实现本地事务的原子性.持久性 Redo Log 的写回策略 Redo Log Buffer 的 ...
- Mysql的两种存储引擎以及区别
一.Mysql的两种存储引擎 1.MyISAM: ①不支持事务,但是整个操作是原子性的(事务具备四种特性:原子性.一致性.隔离性.持久性) ②不支持外键,支持表锁,每次所住的是整张表 MyIS ...
- BayaiM__Linux安装MySQL的两种方法
BayaiM__Linux安装MySQL的两种方法 < 以下内容,纯属抄袭,如有雷同,爱咋咋地 > 阅读(21210) | 评论(4340) | 转发(5660) | 删除 编辑 ...
- mysql 有两种数据库引擎发音
mysql 有两种数据库引擎 一种是 MyISAM,一种是 InnoDB MyISAM 发音为 "my-z[ei]m"; InnoDB 发音为 "in-no-db&quo ...
- flask 操作mysql的两种方式-sqlalchemy操作
flask 操作mysql的两种方式-sqlalchemy操作 二.ORM sqlalchemy操作 #coding=utf-8 # model.py from app import db class ...
随机推荐
- 【tensorflow】VMware Ubuntu+Tensorflow配置和使用
本文主要是记录配置tf环境和虚拟机时遇到的问题和方法,方便日后再查找(补前三年欠下的技术债) 宿主机环境:win10 64位 宿主机python: anaconda+python3.6 宿主机tens ...
- 在VirtualBox中调整Raspbian分辨率
参考自一路阳光随行发表的virtualBox设置虚拟机分辨率大小中ubuntu虚拟机分辨率的设置方法. 启动Raspbian虚拟机,点击 窗口主菜单里的设备->安装增强功能.系统后会自动挂载增强 ...
- oracle ql/sql 相关语法解析
这篇文章主要介绍了Oracle中游标Cursor基本用法详解,还是比较全面的,具有一定参考价值,需要的朋友可以了解下. 查询 SELECT语句用于从数据库中查询数据,当在PL/SQL中使用SELE ...
- AtCoder 1807 食塩水
题意 有 \(n\) 瓶食盐水,第 \(i\) 瓶为质量 \(w_i\),浓度 \(p_i\%\) 的食盐水,需要选出 \(k\) 瓶食盐水混合在一起,问最大浓度. \(\texttt{Data Ra ...
- SPOJ16607 IE1 - Sweets
题面 传送门: 洛咕 SPOJ Solution 这题的想法挺妙的. . 首先,对于这种区间求答案的问题,我们一般都可以通过类似前缀和的思想一减来消去a,即求[a,b]的答案可以转化为求[1,b]-[ ...
- Java读取Excel报错Unable to recognize OLE stream
Unable to recognize OLE stream 的解决方法 将xlsx用excel打开并另存为2003的xls,然后再运行即可解决问题 File file = new File(&quo ...
- Docker - 解决 gitlab 容器上的项目进行 clone 时,IP 地址显示一串数字而不是正常 IP 地址的问题
问题背景 通过 gitlab 容器创建了一个项目,想 clone 到本地,结果发现项目的 IP 地址是一串数字 问题排查 明明创建项目的时候,IP 地址还是正常的鸭! 再看看项目的 settings ...
- startup乱码解决方法
1.用记事本方式打开:apache-tomcat-8.5.59\conf\logging.properties 2.使用快捷键(Ctrl+H)把UTF-8全部替换为:GBK,进行保存(Ctrl+s) ...
- 淘宝客?CPS技术是怎么实现的?
前言 微信搜[Java3y]关注这个有梦想的男人,点赞关注是对我最大的支持! 文本已收录至我的GitHub:https://github.com/ZhongFuCheng3y/3y,有300多篇原创文 ...
- 服务和进程管理及查看分区和cpu
查看分区:cat /proc/partitions [root@lbg init.d]# cat /proc/partitions major minor #blocks name ...