MySQL日志之binlog,redo log

这篇具有很好参考价值的文章主要介绍了MySQL日志之binlog,redo log。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

1.binlog

概念:

作用:

格式:

写入操作:

2.redo log

概念:

作用:

redo log在MySQL操作数据时的实现:

查询时:

更新时:

写入操作:

概念:

刷盘策略:

自动刷盘操作:


1.binlog

概念:

binlog,记录所有语句的更新操作(即只要增删改,不包含查)

作用:

同步数据,保证数据的一致性

格式:

statement:记录完整的SQL语句;

                但可能导致数据不一致(比如实时性操作使用了NOW())

row:不仅记录完整的SQL语句,还记录操作的具体数据(但这个数据需要解析才能看到);

                保证了数据一致,但消耗大量资源

mixed:statement和row的混合;

                MySQL自己判断是否导致数据不一致:

                        不一致:使用row格式

                        一致:使用statement格式

写入操作:

事务执行过程中,先将日志写入binlog cache缓存中,事务提交时,将binlog cache缓存写入binlog日志中

2.redo log

概念:

redo log,重做日志

作用:

使得MySQL拥有崩溃恢复能力,当MySQL出现异常,重启时能够使用redo log恢复数据

redo log在MySQL操作数据时的实现:

查询时:

数据以页为单位,查询时会从硬盘中加载每一个数据页,放到缓冲池中;之后的查询先从缓冲池查询,未命中再从硬盘加载;

更新时:

先从缓冲池更新,将更新日志记录到redo log buffer的缓存中,然后再刷盘到redo log文件中

写入操作:

概念:

也叫做刷盘操作,将redo log buffer的缓存内容刷盘到实际redo log日志中

刷盘策略:

InnoDB提供了innodb_flush_log_at_trx_commit,支持三种策略:

0:每次事务提交时不进行刷盘

1:每次事务提交时进行刷盘(默认)

2:每次事务提交时只把redo log buffer缓存内容写入文件缓存,然后再进行刷盘

自动刷盘操作:

轮询刷盘:InnoDB的一个后台线程,每隔1s就将redo log buffer缓存内存写到文件缓存,然后进行刷盘

主动刷盘:redo log buffer空间得到innodb_log_buffer_size一半就主动刷盘文章来源地址https://www.toymoban.com/news/detail-561653.html

到了这里,关于MySQL日志之binlog,redo log的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • MySQL 三大日志(bin log、redo log、undo log)

    redo log (重做日志) 是 InnoDB 存储引擎独有的,它让 MySQL有了崩溃恢复的能力,是事务中实现 持久化的重要操作 比如 MySQL 实例宕机了,重启时, InnoDB 存储引擎会使用 redo log 恢复数据,保 证数据的持久性与完整性 。 MySQL 中数据时以页为单位,查询一条记录,会从硬盘中把该

    2024年02月07日
    浏览(53)
  • 【数据库管理】④重做日志Redo Log

    重做日志(Redo log)是数据库管理系统中的一种机制,主要作用包括: 提供事务的持久性支持:重做日志记录了每个事务对数据库所做的修改操作,以便在系统故障或崩溃时,通过重新执行重做日志中未提交的事务来恢复数据。 支持数据库备份和恢复:重做日志可以用于还原

    2023年04月08日
    浏览(63)
  • Mysql日志redo log、bin log、undo log 区别与作用及二阶段提交

    重做日志 作用:确保事务的持久性。防止在发生故障的时间点,尚有脏页未写入磁盘,在重启mysql服务的时候,根据redo log进行重做,从而达到事务的持久性这一特性。 内容:物理格式的日志,记录的是物理数据页面的修改的信息,其redo log是顺序写入redo log file的物理文件中

    2024年02月03日
    浏览(46)
  • MySQL数据库——MySQL慢查询日志(Slow Query Log)

    慢查询日志用来记录在 MySQL 中执行时间超过指定时间的查询语句。通过慢查询日志,可以查找出哪些查询语句的执行效率低,以便进行优化。 通俗的说,MySQL 慢查询日志是排查问题的 SQL 语句,以及检查当前 MySQL 性能的一个重要功能。如果不是调优需要,一般不建议启动该

    2024年02月06日
    浏览(57)
  • MySQL redo log

    重做日志,用于记录事务操作的变化,确保事务的 持久性 。redo log是在 事务开始 后(begin; 之后)就开始记录,不管事务是否提交都会记录下来,在异常发生时(如数据持久化过程中掉电), InnoDB 会使用redo log恢复到掉电前的时刻,保证数据的完整性。 undo log 称为 逻辑 日

    2024年02月09日
    浏览(33)
  • oracle的redo与postgreSQL的WAL以及MySQL的binlog区别

    Oracle的redo日志、PostgreSQL的WAL(Write-Ahead Log)以及MySQL的binlog(二进制日志)都是数据库的事务日志,但它们在实现和功能上有一些区别。 1. 实现方式:    - Oracle的redo日志是通过在事务提交前将事务操作记录到磁盘上的重做日志文件中来实现的。    - PostgreSQL的WAL是通过在

    2024年02月09日
    浏览(37)
  • [MySQL]事务原理之redo log,undo log

    🌈键盘敲烂,年薪30万🌈 目录 一、log日志文件 📕 事务执行流程 📕 redo log 📕 undo log 二、总结 👀再来一遍ACID 1. 原子性: 原子性确保事务作为一个整体执行,要么全部执行成功,要么全部不执行。 2. 一致性: 一致性确保事务将数据库从一个状态转换为另一个状态。 3.

    2024年02月04日
    浏览(30)
  • MySQL - 为什么需要 redo log?

    为什么需要 redo log?: 数据恢复与一致性: Redo日志是数据库的事务日志,用于记录事务操作的细节,包括插入、更新和删除等。它确保了数据的持久性,即使在数据库发生崩溃或异常重启后,可以使用Redo日志来还原事务操作,以维护数据的一致性。 WAL机制支持: Redo日志是

    2024年02月06日
    浏览(30)
  • mysql关闭binlog日志,删除binlog数据(win和linux通用)

    打开 mysql 命令窗口,查询 binlog 是否开启   (ON)为开启状态 (OFF)为关闭状态 若开启状态则需要修改配置文件,反之不需要任何操作 在 C:ProgramDataMySQLMySQL Server 8.0 路径下打开 my.ini 并注释掉 bin-log 配置项然后在其后面加入skip-log-bin   重启mysql服务   打开 mysql 命令窗口,

    2024年02月07日
    浏览(38)
  • mysql通过binlog日志恢复误删数据

    log_bin为ON说明可以使用binlog恢复,如果为OFF说明没有开启binlog。 删除数据时间是在文件154与153之间,所以删除操作应在154文件中 mysqlbinlog命令解析日志存入新文件 mysqlbinlog 命令的参数说明 sz命令下载文件到本地 在文件中找到了detele语句 5、语句转换 把mysqllog-154.sql中的DELET

    2024年02月11日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包