极客时间 mysql四十五讲学习笔记(一)
首先通过《一条查询SQL 是如何执行的》来了解mysql的整体架构
第二章通过《一条更新sql的执行逻辑》来分析数据库中常用的log文件(redo log ,bin log)
redo log
一般 redo log 是固定大小的,比如上图,将redo log 配置成四个文件,其中write pos是当前记录的位置,一边写一边往后移,写到3号文件的末尾就回到0号文件开头了,checkpoint 是当前要擦除的位置,也是不断往后推移的,在擦除前,会把记录更新到数据文件中 write pos 和 checkpoint 之间还空着的部分,可以用来记录新的操作。如果 write pos 追上 checkpoint,表示“粉板”满了,这时候不能再执行新的更新,得停下来先擦掉一些记录,把 checkpoint 推进一下。
Bin log
#只查看第一个binlog文件的内容 show binlog events;
in 'mysql-bin.000002';#查看指定binlog文件的内容 show binlog events
#获取binlog文件列表 show binary logs;
#查看当前正在写入的binlog文件 show master status;
-
通过binlog工具 查看数据
mysqlbinlog --no-defaults -vvv DESKTOP-HU0U4FD-bin.000023
注:上图的binlog 格式为row, 记录的是每条sql 的实际数据
-
通过sql 命令看
show binlog events in 'DESKTOP-HU0U4FD-bin.000005';
binlog 被称之为归档日志,在mysql 分布式环境中常常用作主从负责的重要依据,有些项目中需要把mysql 数据同步到其他的存储库(es,mongo等)中的时候,也会用到binlog
Bin log 一般有三种格式,row ,statement 和mixed,其中mixed是前两种格式的混合。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
set global binlog_format=ROW