概要
重要:Redo log日志,binlog log,undo log
server层
一条sql命令执行过程
客户端--------连接器【管理连接,权限校验】-----词法分析器------优化器------执行器
连接器
mysql分server和执行引擎
查询缓存
5.7有查询缓存,8.0没有
词法分析器
优化器
执行器
执行引擎
innodb底层原理与mysql日志机制
一条sql语句经过执行器到达执行引擎
2,mysql为了提高效率,会将常用的数据放在buffer pool中,后面查询数据的时候就不会在ibd【磁盘文件】中查询
1,要是buffer pool中没有该数据,存储引擎innodb首先会先将在ibd中含有该数据的一页数据放在buffer pool中
3,保证事务的原子性,在buffer pool中修改数据之前,会将原数据写到回滚日志中【undo log 日志】
4,在buffer pool中修改数据
5,把数据写在redo log 重做日志中【redo log
为了提升速度会有一个redo log buffer pool
】:意思是先把修改好的数据写到redo log buffer pool
中,再有redo log buffer pool
刷到磁盘去【物理修改,记录哪里哪里需要修改】
6,准备提交事务,binlog日志写入磁盘【binlog归档日志文件,,逻辑修改】
7,写入commit标记到redo 日志里,该标记为了保证事务提交后redo log 与bin log 数据一致
8,将buffer pool数据刷到ibd磁盘中
innodb特有的:undo log , redo log
binlog 是server层的
redo log日志
binlog二进制归档日志
用于恢复数据,同步数据
5.7,默认关闭,8.0,默认开启
show VARIABLES like '%log_bin%';
binlog恢复数据
可以根据偏移量,时间戳来恢复数据
恢复数据库【删库跑路】