MySQL日志

1.binlog

binlog记录了数据库表结构和表数据变更,比如update/delete/insert/truncate/create。它不会记录select,因为这个没有对表进行变更。

binlog到底是什么样的?binlog我们可以理解位存储着每条变更的SQL语句。

主要的两个作用:复制和恢复数据

MySQL在公司使用的时候往往都是一主多从结构的,从服务器需要与主服务器的数据保持一致,这就是通过binlog来是实现的。

数据库的数据被不小心刪掉了,我们可以通过binlog来对数据进行恢复。

因为binlog记录了数据库表的变更,所以我们可以用binlog进行复制和恢复数据

2.redo log

redo log的作用是为了持久化而生的。

写完内存,如果数据库挂了,那我们可以通过redo log来恢复内存还没来得及写入磁盘的数据,将redo log加载到内存里面,那内存就能恢复到挂掉之前的数据了

3.undo log

undo log主要有两个作用:回滚和多版本控制(MVCC)

在数据修改的时候,不仅记录了redo log,还记录undo log,如果因为某些原因导致事务失败或回滚了,可以用undo log进行回滚

undo log主要存储的也是逻辑日志,比如我们要insert一条数据了,那undo log会记录的一条对应的delete日志。我们要update一条记录时,它会记录一条对应相反的update记录。

这也应该容易理解,毕竟回滚嘛,跟需要修改的操作相反就好,这样就能达到回滚的目的。因为支持回滚操作,所以我们就能保证:“一个事务包含多个操作,这些操作要么全部执行,要么全都不执行”。

【原子性】

因为undo log存储着修改之前的数据,相当于一个前版本,MVCC实现的是读写不阻塞,读的时候只要返回前一个版本的数据就行了。

4.中继日志(Relay Log)

中继日志主要是MySQL主从同步的时候会用到

主从同步主要分成三步:

1:主库将数据库的变更操作记录到Binlog日志文件中

2:从库读取主库中的Binlog日志文件信息写入到从库的Relay Log中继日志中

3:从库读取中继日志信息在从库中进行Replay,更新从库数据信息

5.慢查询日志

记录所有执行时间超时的查询SQL,默认是10秒,方便于查询缓慢的定位和分析。

可以通过

show variables like '%slow_query%'查看是否开启和日志的位置,

show variables like '%long_query_time%'查看慢查询的阈值。

6.错误日志

记录MySQL 运行过程中较为严重的警告和错误信息,以及MySQL每次启动和关闭的详细信息,默认是开启的,

可以通过

show variables like '%log_error%'查看。

7.通用日志

记录用户的所有操作,包括启动和关闭 MySQL 服务、更新语句和查询语句等,默认情况下是关闭

可以通过

show variables like '%general%'查看。

一般不开启,会占用大量的磁盘空间。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值