Mysql中的各种日志

Binlog

主要作用:

  1. 主从复制,Master端开启binlog,再将二进制日志传递给slaves回放,来达到数据一致性的目的;
  2. 数据恢复;
  3. 增量备份;

格式:

binlog 日志有 Row、Statement、Mixed 三种格式。可以通过 my.cnf 配置文件及 set global binlog_format='ROW/STATEMENT/MIXED'进行修改

Row格式

Row 格式仅保存记录被修改细节,不记录 sql 语句上下文相关信息。新版本的 MySQL 默认是 Row 格式。

缺点:全表更新或者alter语句会修改每一行,会使日志变的十分庞大;

Statement格式

每一条会修改数据的 sql 都会记录在 binlog 中。

缺点:因为上下文和部分函数的问题,有可能导致主从不一致的情况;

Mixed格式

根据sql语句对于全表row的记录进行优化,其实,新版本的mysql对row格式已经做了优化,默认使用row就可以了;


Redo log

日志先行(WAL):redo log是顺序整块写入的,性能更好。

Checkpoint:更新策略的检查点,将redo log中的内容刷新到磁盘里;

LSN:版本标记计数,对比数据页中的LSN和redo log中的LSN来判断是否需要刷到磁盘里;


一次事务更新过程:

  1. 开启事务;
  2. 查询待更新的记录到内存中,并加X锁
  3. 记录undo log到内存buffer中;
  4. 记录redo log到内存buffer中;
  5. 更新内存中的数据;
  6. 提交事务,触发undo logredo log刷盘
  7. 记录bin log日志
  8. 事务结束,释放锁;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值