redo log和binlog的纠缠

redo log

1redo log属于物理日志,redo log记录格式(数据文件、数据页、数据行、操作类型、操作值)

2redo log主要用来保护innodb buffer pool中的脏数据页,系统崩溃恢复需要用到redo log

3redo log用来进行崩溃恢复事务的前滚;实现快速提交;新版本8.0.17新增了redolog的归档功能,用于实现防止redo备份的速度跟不上生成的速度而导致的redolog被刷掉,保证redolog的不丢失。

4redo log在后台被频繁刷新,包括提交刷新、定期刷新、1/2满刷新;触发的机制(commit;每秒redo日志达到redo buffer的二分之一;redo大小达到1M

5log file会循环覆盖使用,对于没有写会的脏数据页对应的log file不能被覆盖

6redo log不能用来进行备份恢复

7redo log用来保护已提交事务,满足已提交事务持久化

8redo log只能保护innodb引擎对应的表

binlog

1binlog适合常用引擎,主要用来进行数据库备份恢复,不能用来进行崩溃恢复;

2binlog属于逻辑日志,逻辑日志以SQL的方式来记录数据变更;

3、提交时一次性写入,因此可能会产生binlog的临时磁盘文件

4binlog不会循环覆盖,我们可以定期手工删除,通过参数控制设置定期清空策略来可以实现自动删除,但是可能会导致IO性能问题,因此最好还是手工删除。

5binlog支持rowmixedstatement三种模式。

row模式保证了数据的一致性,但是产生了大量的binlog

statement模式会导致数据的不一致,因此不建议采用;

mixed模式解决了上面的两种问题,但是现在还是采用row模式的居多。

6binlog主要用来解决三个问题:1、数据恢复 2、主从架构 3、审计功能

7binlog适合常用引擎,可以用来进行备份恢复,不能用来进行崩溃恢复

8binlog在恢复的时候可以实现单表、单库恢复,因此恢复比较灵活

9binlog提交时写入binlog日志文件,因此需要binlog cache来缓存,缓存过小会导致binlog disk uasge,影响事务的提交速度。

10binlog参数binlog_rows_query_log_events用来记录SQL原始模式,便于SQL审计以及定位搜索;

11、会话级别临时关闭binlogsql_log_bin对于降低主从延迟非常有意义,大批量操作可以同时在主库和从库执行

12binlog提交时写入binlog日志文件,因此需要binlog cache来缓存,缓存过小会导致binlog disk uasge,影响事务的提交速度

13binlog可以使用mysqlbinlog进行查看具体内容,进行DMLDDL日志审计

转载于:https://www.cnblogs.com/5945yang/p/11259175.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值