MySql日志概述
存储引擎里用的是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两阶段提交
《三体》中有句话——弱小和无知不是生存的障碍,傲慢才是。
所以我们不要做一个小青蛙
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架