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

MySQL 崩溃恢复过程分析

本文我们一起来看看,MySQL 在崩溃恢复过程中都干了哪些事情,Redo 日志又是怎么大显身手的。...本文介绍的崩溃恢复过程,包含 server 层和 InnoDB,不涉及其它存储引擎,内容基于 MySQL 8.0.29 源码。 目录 1. 概述 2. 读取两次写页面 3....那就只能等待下次启动的时候再干了,这就是本文要介绍的崩溃恢复过程。 2....读取两次写页面 MySQL 一旦崩溃,Redo 日志就要去拯救世界了(MySQL 就是它的世界),Redo 日志拯救世界的方式就是把还没来得及刷盘的脏页恢复到崩溃之前那一刻的状态。...总结 MySQL 崩溃恢复过程的核心工作有 2 点: 对于 MySQL 崩溃之前还没有刷新到磁盘的数据页(也就是脏页),用 Redo 日志把这些数据页恢复到 MySQL 崩溃之前那一刻的状态,这相当于对脏页进行一次刷盘操作

1.1K10

MySQL崩溃恢复功臣—Redo Log

Redo log文件是InnoDB用于崩溃恢复(crash recovery)以及组提交(group commit)策略的重要文件,存在于磁盘上。...下面大致讲解下Redo log是怎么做到崩溃恢复以及组提交的。 崩溃恢复 崩溃恢复能力是指InnoDB可以保证数据库在异常崩溃重启后的状态和使用binlog文件恢复出来的数据库状态保持一致。...此时如果使用binlog文件进行恢复数据库(比如备库),则会导致数据库不一致的情况。...下面我们从上图4个可能发生异常关闭的时间点来分析InnoDB如何在MySQL启动时做崩溃恢复。...组提交 上面关于崩溃恢复部分只是讲了写redo log和binlog的步骤,那么一定很疑惑数据是何时被写入到磁盘文件中的呢,这里就要说下InnoDB通过redo log实现的组提交的策略了。

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

    存储崩溃MySQL数据库恢复案例

    RAID5磁盘阵列,由于未知的原因导致存储忽然崩溃无法启动,RAID5阵列中的虚拟机全部丢失,其中3台虚拟机为重要数据,需要主要针对该3台虚拟机进行数据恢复。...经客户描述故障过程为:第一块硬盘掉线后系统启动热备盘进行替换,第二块硬盘掉线时RAID5处于降级状态,第三块硬盘掉线导致RAID阵列崩溃。下面看看北亚工程师是如何进行操作的吧!...四、通过分析数据库页提取数据 本次数据恢复的虚拟机内有mysql数据库,可以利用数据库底层存储的特殊性进行数据页扫描,提取数据。...五、获取mysql数据页并分析 根据mysql数据页特征进行数据页扫描并导出(innodb引擎可以使用此方案,myisam因为没有“数据页”概念所以不可用),分析系统表获取各用户表信息,根据各个表的id...分别使用两组不同表结构对数据记录进行提取并导入恢复环境中的mysql数据库内,然后剔除各个表中因为表结构变更造成的乱码数据,最后将两组数据分别导出为.sql文件。

    4.7K20

    基于Redo Log和Undo Log的MySQL崩溃恢复流程

    被修改过的数据会在之后统一刷入磁盘。 MySQL 奔溃恢复 这个过程看似没啥问题,实则不讲武德。假设我们修改Buffer Pool中的数据成功,但是还没来得及将数据刷入磁盘MySQL就挂了怎么办?...那不完犊子吗,连数据持久化的保证、事务回滚都做不到还谈什么崩溃恢复? Redo Log & Undo Log 而通过MySQL能够实现崩溃恢复的事实来看,MySQL必定实现了某些骚操作。...实现日志后的更新流程 有了Redo Log和Undo Log,我们再将上面的那张图给完善一下。 MySQL 崩溃恢复 首先,更新数据还是会判断数据是否存在于Buffer Pool中,不存在则加载。...而通过磁盘Redo Log文件恢复的状态和宕机前事务开始前的状态是一样的,所以是没有影响的。然后等待事务commit了之后就会将Redo Log和Binlog刷到磁盘。...MySQL 崩溃恢复 简单介绍一下2PC,它是一种保证分布式事务数据一致性的协议,它中文名叫两阶段提交,它将分布式事务的提交拆分成了2个阶段,分别是Prepare和Commit/Rollback。

    1.2K10

    SOLIDWORKS培训教程 | SW崩溃后如何恢复文件?

    SOLIDWORKS软件在使用的过程中,出现崩溃关闭的情况,文件尚未来得及保存,应该如何恢复呢?1、通常情况下,SOLIDWORKS软件中可以勾选自动恢复。...如下图中所示,可以点击【工具】-【选项】,在弹出的窗口中选择【备份/恢复】。...这时候可以复制自动恢复文件夹里的目录地址,到下图的位置中打开文件夹,就可以看到SOLIDWORKS软件崩溃时缓存的SOLIDWORKS文件了。2、下图所示,存储文件都会附加一个扩展名.swar。...这时候只需要根据时间进行排序,就可以找到刚刚SOLIDWORKS软件崩溃时的缓存文件了,找到了之后只需要把后缀的“.swar”去掉,然后就可以用SOLIDWORKS正常打开了。...以上就是SOLIDWORKS恢复未保存文件的方法,如果您还有其他问题,请随时联系微辰三维,作为达索SOLIDWORKS正版授权代理商,我们提供SOLIDWORKS培训教学,欢迎来询。

    1K20

    Docker 中的 PostgreSQL 崩溃恢复记录

    Docker 中的 PostgreSQL 崩溃恢复记录 在 Docker 中运行的 PostgreSQL 数据库突然无法启动, 错误日志类似这样: PANIC,XX000,"could not locate...LOG,00000,"aborting startup due to startup process failure",,,,,,,,,"" 这种情况多数情况下是在执行事务时, 数据库被强行关闭导致的,...修复的方法是: 如果使用的 PostgreSQL 是 10.x 或更高的的版本, 使用 pg_resetwal DATADIR 来解决; 否则使用 pg_resetxlog DATADIR 来解决;...由于数据库是在 Docker 中运行的, 因此需要按照 Docker 的方式来修复: 使用 pg_resetxlog 或者 pgresetwal 有可能会丢失数据, 启动之后, 需要仔细检查数据库的健康情况...更多请参考 PostgreSQL 的文档 https://www.postgresql.org/docs/current/app-pgresetwal.html 在客户端创建要素图层

    1.8K20

    【分布式事务】面试官问我:MySQL中的XA事务崩溃了如何恢复??

    测试MySQL XA事务时,正当测试脚本向数据库中批量插入数据时,强制服务器断电!注意:是直接拔电源,使其瞬间断电,再次重启服务器后,MySQL数据库报错了。特此记录MySQL XA事务的恢复。...MySQL XA事务问题 服务器强制断电后重启,此时MySQL报错,查看MySQL启动日志时,发现如下所示的错误信息。...那该如何恢复MySQL的XA事务呢? 恢复MySQL XA事务 首先,登录到MySQL,执行如下命令。...MySQL XA实施是针对外部XA的,其中,MySQL服务器作为资源管理器,而客户端程序作为事务管理器。未实施“内部XA”。...在全局事务内,对于每个XA事务,xid值的bqual部分应是不同的,该要求是对当前MySQL XA实施的限制。它不是XA规范的组成部分。

    1.4K10

    EMC存储崩溃恢复案例

    本次分享的案例为EMC FC AX-4存储崩溃,整个存储空间由12块1TB STAT的硬盘组成的,其中10块硬盘组成一个RAID5的阵列,其余两块做成热备盘使用。...【备份数据】 考虑到数据的安全性以及可还原性,在做数据恢复之前需要对所有源数据做备份,以防万一其他原因导致数据无法再次恢复。...【数据恢复过程】 1、分析故障原因 由于前两个步骤并没有检测到磁盘有物理故障或者是坏道,由此推断可能是由于某些磁盘读写不稳定导致故障发生。...然后根据这些信息使用北亚RAID恢复程序,解释LUN的数据MAP并导出LUN的所有数据。...由用户方工程师进行验证,验证结果都没有问题,数据均完整,本次数据恢复成功。

    1.9K30

    PostgreSQL崩溃恢复读取WAL

    1、崩溃恢复和备机回放都是StartupXLOG函数进行处理,从pgcontrol文件中读取checkpoint位置,从这个位置开始读取WAL记录进行回放。...如果读取的record为NULL,且是备机则切换日志源,从下一个日志源读取WAL 4、读取WAL的函数ReadPageInternal->XLogPageRead,日志源为流复制则根据条件判断读入的长度...,否则为1页大小,但真正进行read的时候是以页为单位的。...这里应该是读取的真实日志量。 5、日志读入内存的XLogReaderState->readBuf中,这个大小为8KB即一页大小。...XLogReaderState->readLen为读入的日志量,有可能比8KB小 6、若下个WAL记录在下一页,需要跳过页头信息,否则为state->EndRecPtr即当前已读取的WAL记录末尾+1,

    82110

    存储崩溃的数据恢复通用方法

    服务器数据恢复指的是通过技术手段将原本存储在服务器、存储设备内的,由于误操作、硬件故障、恶意攻击等原因丢失的数据进行修复提取的专业技术。...在介绍服务器数据恢复前我们首先需要了解服务器的数据结构、文件存储原理,今天小编通过一起华为s5300服务器数据介绍该型号服务器的数据存储结构和数据恢复原理。...在服务器正常运行过程中有一块硬盘离线激活了热备盘进行数据同步,在数据同步的过程中服务器内另一块硬盘因为未知故障离线,导致服务器上层应用崩溃,服务器内的数据丢失。...通过校验排查服务器内被同步硬盘 根据已经分析得到的服务器阵列信息,数据恢复工程师使用自主研发的raid虚拟程序进行重组原始阵列,但是在重组过程中发现有一块硬盘内的数据被同步破坏,我们在数据恢复过程中需要将被损坏的硬盘排除...【服务器数据恢复结果验证】 经过数据库数据恢复工程师对数据的修复和验证,最终成功恢复服务器内的数据库,服务器数据恢复工程师将修复成功的数据库数据导入数据恢复服务器进行验证,所有数据正常,联系客户进行现场数据验证均无异常

    89311

    RAID5崩溃后的文件恢复

    苏州某幼儿园,服务器RAID5崩溃,几年来的重要文件都在里面,老师们顿时慌了神。 之前已经有IT公司过去看过了,说是无法恢复,或者说,需要巨额费用。...我们到了之后,打开服务器是图1的样子,服务器无法引导,而且内存还报错,顺便发现前置USB接口全坏。 按照提示,拔掉报错的内存,服务器当然还是无法引导,提示磁盘丢失。...进入阵列卡配置界面,发现是三块硬盘做的RAID5,没有热备盘,只有一块Ready状态,330的卡实在是不建议跑RAID5,RAID1还是可以的。 强制上线失败,将服务器带回公司处理。...经客户确认并且同意后,更换两块硬盘,配置为RAID1,恢复文件到新的逻辑磁盘中,重新设置共享。 几天后老师发现,还是有重要文件缺失。...经分析,正是磁盘损坏的时候造成的,经过一晚上的努力,又成功恢复了 这部分文件,得到客户的认可,我们自然也很开心!

    93110

    简单聊聊Innodb崩溃恢复那些事

    简单聊聊Innodb崩溃恢复那些事 本文想用简单精炼的语言将Innodb崩溃恢复那些事情好好拾到拾到,本文主要参考以下三本书和我个人一些感想而作: Innodb技术内幕第二版 Mysql运维内参 从根上理解...逻辑层面看,崩溃恢复过程中,并不能直接根据这些日志里的记载,将页面内的某个偏移量恢复为某个数据,而是需要根据日志类型调用一些事先准备好的函数,执行完这些函数后才可以将页面恢复成系统崩溃前的样子 逻辑日志最大缺点就是需要首先保障日志对应页面的正确性...---- 崩溃恢复 崩溃恢复整个过程由redo和undo两个阶段完成,本节我们先来看看redo阶段是如何将数据库恢复到其崩溃前的模样的。...崩溃恢复在经过了redo阶段后,就将数据库恢复到了崩溃恢复前的模样,下一步我们就需要进入undo阶段,将崩溃恢复前未提交的事务进行回滚了。...- 额外参考 MySQL · 引擎特性 · WAL那些事儿 MySQL · 源码分析 · 庖丁解 InnoDB 之 Buffer Pool 数据库故障恢复机制的前世今生 B+树数据库加锁历史 MySQL

    61830

    第09问:MySQL 莫名崩溃,如何保留现场?

    问题 我的 MySQL 偶尔崩溃,如果需要追查原因,应该如何保留现场? 实验 MySQL 随着版本不停迭代,崩溃的现象越来越少,也越来越隐蔽。...一旦遇到生产环境上的 MySQL 崩溃,就需要保留现场信息,供分析用。虽然 MySQL 的 error log 中会打印部分信息,但对于比较隐蔽的崩溃,往往显得力不从心。...是因为异常崩溃了, error log 中有一段堆栈信息,可以用来判断这个崩溃的问题, 以上是 MySQL 能提供的所有信息,无法针对一些复杂场景进行分析。...可以用 gdb 去访问 coredump 文件,获取各种信息,此处举例如何获取所有线程的堆栈信息。 我们会得到一个非常长的堆栈信息,我们截取其中一小段,标注上简单的中文即可看懂。...结论 通过开启操作系统级别、放开用户限制、启用 MySQL 参数三个步骤,我们启用了 MySQL 的 coredump 功能,使得 MySQL 崩溃时留下了足够的线索。

    81420

    zookeeper的zab协议工作原理之 崩溃恢复模式

    上篇 zookeeper的zab协议工作原理之 原子广播 介绍了 zookeeper 广播的原理。 下篇 来详细的讲解 崩溃恢复模式 的原理 一、什么情况下zab协议会进入崩溃恢复模式?    ...二、zab协议进入崩溃恢复模式会做什么?     1、当leader出现问题,zab协议进入崩溃恢复模式,并且选举出新的leader。...当新的leader选举出来以后,如果集群中已经有过半机器完成了leader服务器的状态同(数据同步),退出崩溃恢复,进入消息广播模式。  ...2、当新的机器加入到集群中的时候,如果已经存在leader服务器,那么新加入的服务器就会自觉进入崩溃恢复模式,找到leader进行数据同步。...如何解决 已经被处理的事务请求(proposal)不能丢(commit的)呢?

    2.6K70

    IBM 3650服务器崩溃数据恢复案例

    【数据初检及恢复过程】 服务器数据恢复工程师首先对RAID磁盘阵列进行初检,发现该服务器中的0号磁盘和4号磁盘出现物理故障离线导致RAID崩溃。...2.对所有磁盘在原始RAID中的组合参数进行分析,过程中发现磁盘阵列中的0号磁盘损坏严重,并且离线时间相对早,没有最新数据,所以没有必要对其进行修复。...因此后掉线的4号磁盘就是重要的数据磁盘,想要恢复数据,必需修复4号磁盘。 3.数据恢复中心的硬件恢复工程师配合服务器数据恢复团队对硬盘进行硬件修复,(此过程需要数据恢复设备)。...4.对磁盘阵列中后掉线的4号磁盘进行硬件修复完成后,按开始分析出来的原始RAID组合参数,虚拟重构RAID。原服务器上的三个分区均能正常识别,并能看见所有的文件。...5.恢复出重要的SQL SERVER 数据库文件,并附加到 SQL SERVER 上进行验证和查看,数据库数据正常。 【数据恢复结果】 经客户验证数据没有问题,历经1个工作日,本次数据恢复成功。

    3K30

    如何使用phpMyAdmin恢复备份的MySQL数据库

    如何使用phpMyAdmin恢复备份的MySQL数据库 mysql数据库, mysql数据库管理, 备份数据库 如何使用phpMyAdmin恢复备份的MySQL数据库 phpMyAdmin是一个用于通过...在本教程中,我们晓得博客将为你介绍使用phpMyAdmin恢复备份的MySQL数据库。   ...推荐:什么是phpMyAdmin 你需要什么   以下将用备份的数据库 替换 您当前的数据库,并将您的数据库恢复到备份时的状态。...结论   以上是晓得博客将为你介绍怎么使用 phpMyAdmin恢复备份的MySQL数据库的教程,应该已经了解和会使用phpMyAdmin从备份文件中成功恢复了数据库。...推荐:如何使用 phpMyadmin 优化MySQL数据库 晓得博客,版权所有丨如未注明,均为原创 晓得博客 » 如何使用phpMyAdmin恢复备份的MySQL数据库 转载请保留链接:https:/

    4.8K30

    mysql的备份及恢复

    那么我们该如何保证数据不丢失、或者丢失后可以快速恢复呢? 为什么需要备份数据?...硬件故障 软件故障 自然灾害 黑客攻击 误操作 (占比最大) 所以, 为了在数据丢失之后能够恢复数据, 我们就需要定期的备份数据, 备份数据的策略要根据不同的应用场景进行定制, 大致有几个参考数值, 我们可以根据这些数值从而定制符合特定环境中的数据备份策略...能够容忍丢失多少数据 恢复数据需要多长时间 需要恢复哪一些数据 数据的备份类型 数据的备份类型根据其自身的特性主要分为以下几组 完全备份 部分备份 完全备份指的是备份整个数据集( 即整个数据库 ).../mysql/data  6,启动服务 [root@centos7 ~]# systemctl restart mariadb.service 4.通过二进制日志恢复 recovery 先读取最后一次增量备份目录下的...xtrabackup_binlog_info,获取需要恢复的二进制日志的起始位置 [root@centos7 ~]# mysqlbinlog --start-position=8057 /mysql/

    57420
    领券