首页 > 数据库技术 > 详细

MySql日志概述

时间:2021-01-30 23:17:13      阅读:36      评论:0      收藏:0      [点我收藏+]

技术分享图片

 存储引擎里用的是redo日志和undo日志,服务层用的是bin日志

Redo日志

技术分享图片

意思就是在存日志时候,如果要存在磁盘,肯定需要开启io,每次都要开启关闭io,所以它每次都是先把日志放在内存,然后读取到磁盘,但有个问题,如果突然断电了,日志难道要丢失吗?它把日志存在内存时候,干了这么一件事。。。

技术分享图片

在每次把日志存放在内存时候,经过log buffer,它是用户的某一个内存空间,里面分redo和undo,然后经过user space和kernel space,user space是用户控制的,kernel space是内核控制的,也就是经过OS buffer操作系统,就是从一块缓存拷贝到另一块缓存,这个速度肯定非常快,并不是直接从内存写到磁盘空间。然后在OS buffer会经过fsync()方法,写入到磁盘。

所以在每次如果真的断点的话,redo日志会把日志恢复,避免数据丢失。日志每次也不是说有一个就赶紧存到磁盘,这样效率很低,它会有一个缓存机制,有一定数据量一并写入磁盘。

执行顺序图:

技术分享图片

 Undo日志

技术分享图片

 redo表示在每次数据写到磁盘时候保证原始性,undo表示要么成功要么失败

Bin日志

技术分享图片

binlog就是归档日志

之前早时候携程的数据库丢失数据了,有的说被黑客攻击了,有的说自己员工不小心删除了,不管怎么回事,这样的结果最终想要的是恢复数据

binlog可以恢复数据,就算数据丢了,如果binlog日志文件不丢,就能恢复数据!

注意:如果你的binlog没开启的话,默认是不开启的。

技术分享图片

命令行输入:show variables like ‘%log_%‘:      然后回车

技术分享图片

可以看到binlog是关闭的,如果要开启需要设置成ON

技术分享图片

 Redo log两阶段提交

技术分享图片

 

MySql日志概述

原文:https://www.cnblogs.com/abiu/p/14350956.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!