文章内容学习:极客时间-林晓彬老师-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都持久化到磁盘

最新文章

  1. 解决IE8下不兼容rgba()的解决办法
  2. Ecs下的两台mysql做主从设置
  3. linux上ln链接命令详细说明
  4. office-001-Outlook邮件配置图文详解
  5. Windows下cwRsync搭建步骤
  6. cocos2dx中的设计分辨率与屏幕适配策略
  7. 259. 3Sum Smaller
  8. [杂题]CSUOJ1276 Counting Route Sequence
  9. 水平/竖直居中在旧版Safari上的bug
  10. Fishnet(计算几何)
  11. sql推断时间
  12. linux命令后台执行
  13. WPF基础篇之命名空间
  14. Golang之变量去哪儿
  15. P1417 烹调方案 (0/1背包+贪心)
  16. 2019.03.29 NOIP训练 友好国度(点分治+容斥)
  17. 在react中使用less(官方做法)
  18. Python学习前期准备---第九天
  19. HDU 4666 Hyperspace (最远曼哈顿距离)
  20. log4j2使用介绍

热门文章

  1. 02 . Go框架之Gin框架从入门到熟悉(数据解析和绑定,渲染,重定向,同步异步,中间件)
  2. OpenCascade拓扑对象之:拓扑对象方向继承关系
  3. net core webapi多版本控制与nswag 交互
  4. C#5语法新特性
  5. LOJ #6029. 「雅礼集训 2017 Day1」市场 线段树维护区间除法
  6. 1+X云计算 应用商城系统(gpmall)-遇到的问题以及解决办法
  7. 你知道MySQL的LRU链表吗?
  8. linux c 线程间同步(通信)的几种方法--互斥锁,条件变量,信号量,读写锁
  9. 【java从入门到精通】day10-Java流程控制2-switch多选择结构
  10. EF Core 二 、 入门 EF Core