MySQL日志系统简单学习

MySQL日志文件

错误日志(Error log)

默认开启,使用命令 show variables like ‘%log_error%’;

通用查询日志(General querylog)

记录一般查询语句, show variables like ‘%general%’;

二进制日志(binary log)

记录了对MySQL数据库执行的更改操作,并且记录了语句的发生时间,执行时长,但是不记录select,show等不修改数据库操作的SQL,主要用于数据库恢复和主从复制。

show variables like ‘%log_bin%’; //查看是否开启
show variables like ‘%binlog%’;//参数查看
show binary logs //查看日志文件

慢查询日志(slow querylog)

记录所有执行时间超时的查询SQL,默认是10秒
show variables like ‘%slow_query%’; //查看是否开启
show variables like ‘%long_query_time%’;//参数时长

Undo Log(回滚日志)、Redo Log(重做日志)、Binlog(归档日志)

Undo Log

介绍:
Undo 意为撤销或取消,以撤销操作为目的,返回指定某个状态的操作。
Undo Log:数据库事务开启之前,会将要修改的记录存放到Undo日志里,当事务回滚时或者数据库崩溃时,可以利用Undo日志,撤销未提交事务对数据产生的影响。
产生和销毁:在事务开始前产生,在事务提交时,并不会立刻删除undo log,innodb会将该事务对应的undo log放入到删除列表中,后面会通过后台线程purge thread进行回收处理,属于逻辑性日志,记录一个变化过程。例如执行一个delete,undolog会记录一个insert,执行一个update,undo会记录一个相反的update。
存储:采用段的方式管理和记录,在innodb数据文件中包含一种rollback segment回滚段,内部包含1024个undo log segment。
作用:
1.实现事务的原子性:事务处理过程中,如果出现了错误或者是用户执行了rollback语句,MySQL可以利用UndoLog中的备份将数据恢复到事务开始之前的状态。
2.实现多版本并发控制(MVCC)
undo log在innodb引擎中实现多版本控制,事务提交之前,保存了未提交之前的版本数据。

Redo Log

介绍
顾名思义,就是重做,以恢复操作为目的,在数据库发生意外时重现操作,指的是在事务中修改的任何数据,将最新的数据备份存储的位置,被称为重做日志。
Redo Log的生成和释放:随着事务操作的执行,就会生成Redo Log,在事务提交时会将产生的日志写入Log Buffer,并不是随着事务的提交就立刻写入磁盘文件,等事务操作的脏页写入磁盘后,它的使命也就完成了,Redo Log占用的空间就可以重用。
工作原理
是为了实现事务的持久性而产生的产物,防止在发生故障的时间点,尚有脏页未写入表的IBD文件中,在重启MySQL服务的时候,根据Redo Log进行重做,从而达到事务的未入磁盘数据进行持久化这一特性。
在这里插入图片描述

Binlog

介绍
Redo Log是属于InnoDB引擎所特有的日志,而MySQL Server也有自己的日志,即Binary Log(二进制日志),简称Binlog。binlog是记录所有数据库表结构变更以及表数据修改的二进制日志,不会记录select和show这类操作,Binlog日志是以事件形式记录,还包含语句执行所消耗的时间,开启Binlog日志有以下两个最重要的使用场景:

主从复制
数据恢复

Binlog文件名默认为“主机名_binlong-序列号”格式,也可以在配置文件中指定名称。文件记录模式有STATEMENT,ROW和MIXED三种,具体含义如下:
ROW(row-based replication,RBR):日志中会记录每一行数据被修改的情况,然后在slave端对相同的数据进行修改。
STATMENT(statment-based replication,SBR):每一条被修改的SQL都会记录到master的Binlog中,slave在复制的时候SQL进程会解析成和原来master端执行过的相同的SQL再次执行。简称SQL语句复制。
MIXED(mixed-based replication,MBR):以上两种模式的混合使用,一般会使用STATMENT模式保存binlog,对于STATMENT模式无法复制的操作使用ROW模式保存binlog,MySQL会根据执行的SQL语句选择写入模式。

Binlog文件结构:
M有SQL的binlog文件中记录的是对数据库的各种修改操作,用来表示修改操作的数据结构是Log event,不同的修改操作对应不同的log event,比较常用的有:Query event,Row event,Xid event等。binlog文件的内容就是各种Log event的集合。
在这里插入图片描述

写入机制
Binlog写入机制:

根据记录模式和操作出发event事件生成log event
将事务执行过程中产生的log event写入缓冲区,每个事物线程都有一个缓冲区
事务在提交阶段会将产生的log event写入到外部的binlog文件中。

binlog文件操作:
1.状态查看

show variables like 'log_bin';
show binary logs;
show master status;

2.开启binlog功能

set global log_bin=mysqllogbin;
ERROR 1238 (HY000):Variable 'log_bin' is a read only variable

需要修改my.cnf或者my.ini配置文件,在mysqld下面增加信息,再重启MySQL服务才可以。

在这里插入图片描述
3.使用show binlog events命令

show binary logs;
show master status;
show binlog events;
show binlong events in 'mysqlbinlog.000001';

4.使用binlog恢复数据
在这里插入图片描述
5.删除binlog文件
在这里插入图片描述

以上内容根据拉勾教育直播课程自行整理,作为简要了解学习使用,更加深入学习需要参考专业的MySQL课程~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值