zoukankan      html  css  js  c++  java
  • 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日志审计

  • 相关阅读:
    正则表达式
    iOS设置图片名称、启动图片、防止TabBar图片和文字渲染
    UIImageView中的UIButton不响应事件解决方案
    iOS 适配https
    【如何快速的开发一个完整的iOS直播app】(美颜篇)
    【如何快速的开发一个完整的iOS直播app】(采集篇)
    【如何快速的开发一个完整的iOS直播app】(播放篇)
    【如何快速的开发一个完整的iOS直播app】(原理篇)
    iOS10字体
    AFN 无网络监控
  • 原文地址:https://www.cnblogs.com/5945yang/p/11259175.html
Copyright © 2011-2022 走看看