MySQL四种日志binlog/redolog/relaylog/undolog

优质博文:IT-BLOG-CN

一、binlog

binlog记录数据库表结构和表数据变更,比如update/delete/insert/truncate/create,它不会记录select。存储着每条变更的SQL语句和XID事务Id等等。binlog日志文件如下:

[[email protected]]# mysqlbinlog mysql-binlog.0000012
..........
# at 523
# 168654 20:22:43 server id 1 end_log_pos 843 Query thread_id=3 exec_time=0 error_code=0
SET TIMESTAMP=156521934/*!*/;
INSERT INTO student('name','age','sex') VALUES('ZZX',20,'1');  # 执行的SQL语句
/*!*/;
# at 669
#168654 20:22:45 server id 1 end_log_pos 876 Xid = 12              #执行的时间和事务ID

主要有两个作用:复制和恢复数据
【1】MySQL架构为了高可用性都是一主多从,从服务器需要与主服务器保持数据一致,这就是通过binlog进行复制;
【2】数据库的数据如果被误删,可以通过binlog数据进行恢复。

因为binlog记录了数据库表的逻辑变更,所以可以用binlog进行主从复制和恢复数据。

二、redo log

MySQL执行SQL修改语句时,肯定是先把这条记录查出来,然后再将这条进行进行修改。因为Mysql的基本存储结构是页,记录都存在页里边,所以MySQL是先把这条记录所在的页找到,然后把该页加载到内存中,将对应记录进行修改。现在就可能存在一个问题:如果在内存中把数据改了,还没来得及落磁盘,而此时的数据库挂了,导致这次修改丢失了怎么办?

如果每个请求都需要将数据立马同步到磁盘,那速度会很慢,MySQL可能也顶不住。所以MySQL引入了redo log,内存写完了,然后会写一份redo log,这份

评论 74
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序猿进阶

千言万语都不及一句“谢谢”

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值