首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

undolog日志(MySQL)

undolog基础概念: undo log是mysql中比较重要的事务日志之一,顾名思义,undo log是一种用于撤销回退的日志,在事务没提交之前,MySQL会先记录更新前的数据到 undo log日志文件里面...,当事务时或者数据库崩溃时,可以利用 undo log来进行回退。...undolog的工作原理: 在更新数据之前,MySQL会提前生成undo log日志,当事务提交的时候,并不会立即删除undo log,因为后面可能需要进行操作,要执行(rollback)操作时...同时为了保证事务的并发操作,在写undo log时不产生冲突,InnoDB使用 段 来维护undo log的并发写入和持久化;而每个段 又有多个undo log slot。...,段可以有用的最大page数。

3.3K30

MySQL 日志 undo log

专栏持续更新中:MySQL详解 一、引入 undo log 一般数据库引擎默认工作在事务的中间两个隔离级别: TRANSACTION_READ_COMMITTED,已提交读,oracle默认工作级别...同一份数据会有多个版本 InnoDB提供了2种读取操作:锁定读和非锁定读 锁定读就是读取的时候加锁(S或X) 非锁定读就是读取的时候没有加锁,指的就是MVCC提供的快照读—>快照读依赖的是底层的undo log日志...事务日志分为undo log(日志) 和 redo log(重做日志) 二、undo log 1. undo log的概念 undo log和redo log统称事务日志,不同于binlog是MySQL...出现异常时(如数据持久化过程断电),重启后InnoDB会使用redo log恢复到断电前的状态,保证数据的完整性 undo log:日志,保存了事务发生之前的数据的一个版本,用于事务的操作,同时也是实现多版本并发控制...(MVCC)下读操作(快照读)的关键技术 2. undo log的作用 undo log日志的主要作用: 事务发生错误时rollback,数据更新之前,会把原始数据保存在日志中,保证事务出错或者我们手动的时候

20830
您找到你想要的搜索结果了吗?
是的
没有找到

MySQL 中的重做日志日志以及二进制日志的简单总结

来源:MSSQL123 , www.cnblogs.com/wy123/p/8365234.html 转自:ImportNew MySQL中有六种日志文件,分别是:重做日志(redo log)、日志...其中重做日志日志与事务操作息息相关,二进制日志也与事务操作有一定的关系,这三种日志,对理解MySQL中的事务操作有着重要的意义。 这里简单总结一下这三者具有一定相关性的日志。...日志(undo log) 作用: 保存了事务发生之前的数据的一个版本,可以用于,同时可以提供多版本并发控制下的读(MVCC),也即非锁定读 内容: 逻辑格式的日志,在执行undo的时候,仅仅是将数据从逻辑上恢复至事务之前的状态...对应的物理文件: MySQL5.6之前,undo表空间位于共享表空间的段中,共享表空间的默认的名称是ibdata,位于数据文件目录中。...其他: 二进制日志的作用之一是还原数据库的,这与redo log很类似,很多人混淆过,但是两者有本质的不同 作用不同:redo log是保证事务的持久性的,是事务层面的,binlog作为还原的功能,是数据库层面的

3.4K70

图文结合带你搞定MySQL日志之Undo log(日志)

Undo Log:数据库事务开始之前,会将要修改的记录放到Undo日志里,当事务时或者数据库崩溃时,可以利用UndoLog撤销未提交事务对数据库产生的影响。 Undo Log是事务原子性的保证。...(对于每个UPDATE,InnoDB存储引擎会执行一个相反的UPDATE,将修改前的行放回去) MySQL把这些为了而记录的这些内容称之为撤销日志或者回日志(即Undo Log)。...Undo Log的功能 提供数据-原子性 当事务时或者数据库崩溃时,可以利用Undo Log来进行数据。...Undo Log的工作原理 在更新数据之前,MySQL会提前生成Undo Log日志,当事务提交的时候,并不会立即删除Undo Log,因为后面可能需要进行操作,要执行(ROLLBACK)操作时...:Undo日志存储的目录位置 innodb_undo_logs: 的个数 默认128 参考文章 《MySQL是怎样运行的--从根儿上理解MySQL》—小孩子4919(https://juejin.cn

1.6K30

MySQL】MyFlash mysql binlog

简介: 数据库运行过程中难免会发生误操作,特别是在测试环境 开发人员或测试人员有时会误删或者更新错误某些数据。这时可以用binlog闪DML操作。...本篇文章主要介绍通过MyFlash工具来回binlog。 MyFlash是由美团点评公司技术工程部开发维护的一个DML操作的工具。该工具通过解析v4版本的binlog,完成操作。...相对已有的工具,其增加了更多的过滤选项,让更加容易。...1.databaseNames 指定需要回数据库名。多个数据库可以用“,”隔开。如果不指定该参数,相当于指定了所有数据库。 2.tableNames 指定需要回的表名。多个表可以用“,”隔开。...3.start-position 指定滚开始的位置。如不指定,从文件的开始处。请指定正确的有效的位置,否则无法 4.stop-position 指定结束的位置。如不指定,滚到文件结尾。

3.9K10

MyFlash mysql binlog

简介:MyFlash是由美团点评公司技术工程部开发维护的一个DML操作的工具。该工具通过解析v4版本的binlog,完成操作。相对已有的工具,其增加了更多的过滤选项,让更加容易。...* 1.databaseNames 指定需要回数据库名。多个数据库可以用“,”隔开。如果不指定该参数,相当于指定了所有数据库。 2.tableNames 指定需要回的表名。...3.start-position 指定滚开始的位置。如不指定,从文件的开始处。请指定正确的有效的位置,否则无法 4.stop-position 指定结束的位置。如不指定,滚到文件结尾。...请指定正确的有效的位置,否则无法 5.start-datetime 指定的开始时间。注意格式必须是 %Y-%m-%d %H:%M:%S。...8.maxSplitSize 一旦指定该参数,对文件进行固定尺寸的分割(单位为M),过滤条件有效,但不进行操作。

1.5K20

mysql事务机制概述

事务是用户定义的一个数据库操作序列,这些操作要么全做要么全不做,是一个不可分割的工作单位,事务是指将该事务已经完成的对数据库的更新操作撤销,在事务中,每个正确的原子 操作都会被顺序执行,直到遇到错误的原子操作...ROLLBACK:也可以使用ROLLBACK WORK,两者也是等价的,会结束用户的事务,并且会撤销正在进行的所有未提交的修改。...事务T2读取到了T1更新后的行,然后T1执行操作,取消了刚才所做的修改。...mysql事务怎样实现的代码可以参考此bolg:http://bbs.csdn.net/topics/390876901 要同时修改数据库中两个不同表时,如果它们不是一个事务的话,当第一个表修改完...而当你把它们设定为一个事务的时候,当第一个表修改完,第二表修改出现异常而没能修改,第一个表和第二个表都要回到未修改的状态,这就是所谓的事务

2.6K20

MySQL 的FLASHBACK 数据

数据库的里面的FLASHBACK 功能是一个让人刮目相看的功能,如果你做错了什么怎么能将那段时间的数据恢复,并且还让生产的应用不停止,这是一个数据库管理员都想拥有的功能, SQL SERVER 需要借助第三方软件的功能...,可以完成数据的和恢复,ORACLE 独有的FLASHBACK 功能,以及POSTGRESQL 的pg_dirtyread 功能,都可以从某些方面来进行数据的和数据的找回。...MYSQL的数据找回和使用的是BINLOG2SQL 这个开源的工具,其中的原理如果你懂得MYSQL的binlog 原理,则你会很快明白其可以恢复数据的方式。...如果你想产生的语句,直接在 上图语句的后面添加 flushback ?...同时这个工具可以根据你的pos ,时间点, 日志的范围等等进行相关数据的提取。 所以有了这个工具,基本上大部分的误操作都能进行数据的找回和恢复。

3.1K30

MySQL--事务机制与原理

事务机制 其实,讨论MySQL的事务机制,也就是在说MySQL的事务原子性是如何实现的(关于事务之前文章中有过简单介绍)。...所谓原子性,就是指一个事务是一个不可分割的工作单位,其中的操作要么都做,要么都不做;如果事务中的一个sql语句执行失败,则已执行的语句必须数据库会退回到事务前的状态。...我们可以这么理解,就是说如果事务失败了,那么它对我们的数据库是没有任何影响的。 实现原理 在说明原理之前,需要首先介绍一下MySQL的事务日志。...MySQL日志有很多种,如二进制日志、错误日志、查询日志、慢查询日志等,此外InnDB引擎还提供了两种事务日志:redo log(重做日志)和undo log(日志)。...当事务对数据库进行修改时,InnDB会生成对应的undo log;如果事务失败或者调用了rollback,导致事务,便可以利用undo log中的信息将数据滚到修改之前的样子。

2.8K20

mysql事务机制概述「建议收藏」

事务是用户定义的一个数据库操作序列,这些操作要么全做要么全不做,是一个不可分割的工作单位,事务是指将该事务已经完成的对数据库的更新操作撤销,在事务中,每个正确的原子 操作都会被顺序执行,直到遇到错误的原子操作...ROLLBACK:也可以使用ROLLBACK WORK,两者也是等价的,会结束用户的事务,并且会撤销正在进行的所有未提交的修改。...事务T2读取到了T1更新后的行,然后T1执行操作,取消了刚才所做的修改。...mysql事务怎样实现的代码可以参考此bolg:http://bbs.csdn.net/topics/390876901 要同时修改数据库中两个不同表时,如果它们不是一个事务的话,当第一个表修改完...而当你把它们设定为一个事务的时候,当第一个表修改完,第二表修改出现异常而没能修改,第一个表和第二个表都要回到未修改的状态,这就是所谓的事务

2.6K10

Django数据库--事务及事务

有事务出错的整体操作,也有基于保存点的部分。本文将讨论Django中的这两种机制的运行原理。...一、整体 所有的数据库更新操作都会在一个事务中执行,如果事务中任何一个环节出现错误,都会整个事务。...,不需要任何操作 pass 此方案比较灵活,事务可以在代码中的任意地方开启,对于事务开启前的数据库操作是必定会执行的,事务开启后的数据库操作一旦出现错误就会。...,不需要任何操作 pass 事务外的数据库操作正常执行,而事务内的数据库操作则会。...一旦打开事务atomic(),就会构建一系列等待提交或数据库操作。通常,如果发出命令,则会整个事务。

3.8K10

MySQL update mysqlbinlog回复数据

是否启用了日志 show variables like 'log_%'; 怎样知道当前的日志 mysql> show master status; 显示二进制日志数目 mysql> show master...logs; 看二进制日志文件用mysqlbinlog shell>mysqlbinlog mail-bin.000001 或者shell>mysqlbinlog mail-bin.000001 |....000087 是日志文件所在 /www/server/linshi/1233.sql 是要导出的位置 很快执行完毕,切换到相应目录后就会看到1233.sql文件,再导入数据库恢复吧 执行的语句 sudo...问题: binlog2sql sql 产生的sql 为空,错误的sql 找到了,生成sql 的时候为空,这是为什么呢 就是找到日志文件了,但是在生成sql 的时候,生成的sql 为空,有人遇到过吗...binlog 查看方法 查看二进制文件,并搜索关键字 mysqlbinlog master-bin.000014|grep -5a "DROP TABLE" 发布者:全栈程序员栈长,转载请注明出处:

2.2K10

MySQL事务部分-滚到指定保存点「建议收藏」

我们可以在mysql事务处理过程中定义保存点(SAVEPOINT),然后滚到指定的保存点前的状态。 定义保存点,以及滚到指定保存点前状态的语法如下。...定义保存点—SAVEPOINT 保存点名; 滚到指定保存点—ROLLBACK TO SAVEPOINT 保存点名: 下面演示将向表user中连续插入3条数据,在插入第2条数据的后面定义一个保存点,最后看看能否滚到此保存点...事务开始 mysql> BEGIN; Query OK, 0 rows affected (0.00 sec) 3、向表user中插入2条数据 mysql> INSERT INTO user VALUES...| 3 | one | 0 | | | 4 | two | 0 | | | 5 | three | 0 | | +—–+———-+—–+——+ 5 rows in set (0.02 sec) 6、滚到保存点...test mysql> ROLLBACK TO SAVEPOINT test; Query OK, 0 rows affected (0.31 sec) mysql> select * from user

1.9K30

MYSQL innodb_deadlock_detect 打开数据库性能低,与事务

最近在重新整理MYSQL 8的MY.CNF 的配置, 在和组员讨论的试试,我们的MYSQL DBA 提出一个问题, innodb_deadlock_detect 和 innodb_rollback_on_timeout..., 以及事务的问题....这里需要明确的几个问题 1 innodb_deadlock_detect 是检测死锁的一种方法,从mysql 5.7.13引入的, 在官方MYSQL 8.0 的文档中提到在高并发的系统中还是建议不使用...那么下面的连锁的问题就来了, 如果死锁,其中一个事务, 则根据MYSQL 默认的原则,只最后的一条语句,而不是将所有的事务都回....说到最后我们来捋一捋, 关于死锁以及事务MYSQL的配置我们是怎么做的 1 innodb_deadlock_detect = off 2 innodb_lock_wait_timeout =

1.4K20

MySQL二进制日志

MySQL 5.5 中对于二进制日志 (binlog) 有 3 种不同的格式可选:Mixed,Statement,Row,默认格式是 Statement。 总结一下这三种格式日志的优缺点。...= 'b' WHERE owner_member_id = 'a' 执行之后,日志中记录的不是这条 update 语句所对应的事件 (MySQL 以事件的形式来记录 bin-log 日志) ,而是这条语句所更新的每一条记录的变化情况...自然,bin-log 日志的量就会很大。尤其是当执行 alter table 之类的语句的时候,产生的日志量是惊人的。...因为 MySQL 对于 alter table 之类的表结构变更语句的处理方式是整个表的每一条记录都需要变动,实际上就是重建了整个表。那么该表的每一条记录都会被记录到日志中。 2....在 Mixed 模式下,MySQL 会根据执行的每一条具体的 SQL 语句来区分对待记录的日志形式,也就是在 statement 和 row 之间选择一种。

97150

MySQL】通过Binary Log简单实现数据(一)

前段时间,工作项目上出于对excel等批量操作可能出现误操作的问题,要求提供一个能够根据操作批次进行数据的能力。在开发的过程中接触到了MySQL的Binary Log,感觉有些收获,记录一下。...二、Binary Log的概念 首先我们要了解一下什么是Binary Log(详情点进去看): Binary Log(二进制文件),包含了描述数据库更改的“事件”,例如创建表的操作或者改变表的数据。...也就是说你对数据库的操作,包括INSERT、DELETE在内的CRUD,binlog(命令里简称)都会包含进去,那么,如果我们能够解析(因为从binlog的名字可以知道,这是一个二进制文件,不是人类能够阅读的...前面提到对数据库的操作是以event事件的形式以二进制写入binlog的,那么event是什么样的格式呢?...根据不同选项,你可以得到原始SQL、SQL、去除主键的INSERT SQL等。

1.4K110
领券