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

MySQL 崩溃恢复过程分析

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

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.2K101
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

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

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

    4.6K20

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

    被修改过数据会在之后统一刷入磁盘。 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。

    99510

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

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

    95420

    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.7K20

    【分布式事务】面试官问我:MySQLXA事务崩溃如何恢复??

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

    1.2K10

    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,

    77610

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

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

    87711

    RAID5崩溃文件恢复

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

    89610

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

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

    52930

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

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

    80020

    zookeeperzab协议工作原理之 崩溃恢复模式

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

    2.5K70

    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.7K30

    mysql备份及恢复

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

    57020
    领券