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

MySQL 崩溃恢复过程分析

读取两次写页面 MySQL 一旦崩溃,Redo 日志就要去拯救世界了(MySQL 就是它的世界),Redo 日志拯救世界的方式就是把还没来得及刷盘的脏页恢复到崩溃之前那一刻的状态。...正常状态指的是 MySQL 崩溃之前,数据页最后一次正确的刷新到磁盘的状态。...XID_EVENT 有可能已经同步给从服务器,从服务器上可能已经重放了这个事务。 这种情况下,为了保证主从数据的一致性,事务在主服务器上也需要提交。...XID_EVENT 肯定也就没有同步给从服务器了,同样为了保证主从数据的一致性,事务在主服务器上也不能提交,而是需要回滚。...总结 MySQL 崩溃恢复过程的核心工作有 2 点: 对于 MySQL 崩溃之前还没有刷新到磁盘的数据页(也就是脏页),用 Redo 日志把这些数据页恢复到 MySQL 崩溃之前那一刻的状态,这相当于对脏页进行一次刷盘操作

85610

MySQL崩溃恢复功臣—Redo Log

下面大致讲解下Redo log是怎么做到崩溃恢复以及组提交的。 崩溃恢复 崩溃恢复能力是指InnoDB可以保证数据库在异常崩溃重启后的状态和使用binlog文件恢复出来的数据库状态保持一致。...我们可以假设没有redo log,只有binlog,那么数据文件更新和写入binlog的顺序有两种可能: 第一种 更新数据文件 写入binlog 第二种 写入binlog 更新数据文件 第一种情况如果在完成步骤1后服务器异常关闭...,则导致binlog中缺少最后更新的数据;第二种情况如果在完成步骤1后服务器异常关闭,则数据库中比binlog中少了最后的数据变更记录。...下面我们从上图4个可能发生异常关闭的时间点来分析InnoDB如何在MySQL启动时做崩溃恢复。...Point A 如果服务器异常关闭发生在Point A以及之前的时间点,这个时候redolog 和 binlog都没有任何记录,事务还未提交,不会造成任何影响。

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

捕获崩溃异常并重启程序,上传崩溃日志到服务器

App的上线测试不可能囊括所有的错误,以及一些极端的情况可能考虑不到, 所以给App设置崩溃日志反馈是很有必要的,很多第三方都有做到,例如说腾讯的Bugly,友盟的统计等等,都可以实现到,但是如果仅仅是需要向服务器反馈崩溃日志的话...系统的API中给我们提供了一个可以捕获App异常的方法: Thread.setDefaultUncaughtExceptionHandler(restartHandler); // 程序崩溃时触发线程...以下用来捕获程序崩溃异常 所以我们就可以使用以上方法来解决反馈崩溃日志的需求,以下是具体代码: /** * 创建服务用于捕获崩溃异常 */ private static...public void uncaughtException(Thread thread, Throwable ex) { restartApp(ex);//发生崩溃异常时

85720

崩溃了!服务器:“怪我咯?”

上线之后不久,发现几十个人上线之后服务器崩溃了。一开始还能用大量预算来购买服务器用以支撑,但几天之后由于宣传火爆,随着用户的增多,这才发现单纯增加服务器的成本实在太高了。...玩家开始逐渐骂服务器垃圾,各种掉线、卡顿、crash。本想领先竞品抢先进入市场,结果收获的却是满怀期待玩家们的流失。为什么!因为没有做压力测试! ? 一.为什么游戏服务器要做压力测试呢?...一款好的网络游戏除了完美的研发之外,还需要足够大的带宽和高性能的服务器作为有力后盾。服务器主要承载游戏过程中玩家之间的交互所产生的流量。...而压力测试则是将各种因素考虑到极点来对服务器进行专业性和系统性的测试,以便较大程度上改善系统的瓶颈和了解服务器承载量,所以游戏上线前是非常有必要对服务器做一次完整专业的压力测试的。 ?...现在好了,专业的游戏服务器压力测试工具——腾讯WeTest服务器压测工具,就要对外开放服务了,终于找到了途径来解决压力测试了! 四.腾讯WeTest服务器压力测试能为我提供些什么呢?

1.6K20

服务器数据恢复案例介绍;服务器崩溃修复

服务器数据恢复过程: 某法院的一台服务器由于硬盘出现故障导致服务器崩溃,在当地一家数据恢复机构进行了数据恢复操作,但是数据恢复没有成功,于是负责人在北京寻找服务器数据恢复公司进行数据恢复。...服务器崩溃无法启动数据恢复方法;北亚数据恢复中心服务器数据恢复案例.png 该服务器负责人携带服务器内的所有硬盘来到北京数据恢复中心,硬件工程师首先对所有硬盘进行物理检测,经检测未发现硬盘物理故障,也就是说该服务器崩溃的原因并不是硬盘故障...经过分析发现服务器内至少有2块硬盘离线所以导致服务器崩溃,数据恢复工程师使用穷举法将最早掉线的硬盘剔除后重组磁盘阵列,将生成的数据和服务器内的另一组完好raid同时挂载到原服务器上进行校验,经过客户验证...;服务器的模块老化、服务器系统更新、意外断电等情况都有可能导致服务器崩溃和数据丢失;错误的拔插服务器内的硬盘、误删除等人为因素也是导致服务器数据丢失的另一大因素。...如果服务器由于未知原因出现崩溃、无法启动等数据丢失问题,切忌非专业人士在非洁净空间内对服务器内的硬盘进行拆卸、更换磁头等数据恢复操作,并且建议服务器管理员将故障硬盘进行妥善保管等待专业的数据恢复工程师进行处理

1.8K40

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

IBM 3650服务器中共有5块 SAS 300GB 磁盘组成一组RAID5磁盘阵列,存储划分为一个LUN、3个分区,第一个分区存放的是windows 2003系统,第二个分区用于存储 SQL Server...【数据初检及恢复过程】 服务器数据恢复工程师首先对RAID磁盘阵列进行初检,发现该服务器中的0号磁盘和4号磁盘出现物理故障离线导致RAID崩溃。...1.把服务器中所有磁盘脱离RAID环境,将所有磁盘连接在安全存储中,使用只读方式对所有数据进行分析。...3.数据恢复中心的硬件恢复工程师配合服务器数据恢复团队对硬盘进行硬件修复,(此过程需要数据恢复设备)。...原服务器上的三个分区均能正常识别,并能看见所有的文件。 5.恢复出重要的SQL SERVER 数据库文件,并附加到 SQL SERVER 上进行验证和查看,数据库数据正常。

3K30

导致服务器崩溃的原因有哪些

1、访问峰值或请求超过服务器的承受力企业平时租用和托管的服务器是有峰值承受限制的,一旦超过了该承受能力,就会导致服务器瘫痪,网站访问不了。...而出现这样的直接原因就是在一段时间内,网站的访问量巨大,已经超出了服务器的承受能力。这样的例子比比皆是,以前春运期间,12306网站就频繁出现崩溃,因为那段时间网购火车票的人很多。...日志文件系统空间已 满时Web服务器也会被挂起,但机器自身被挂起的几率已大大减低。3、服务器超载Netscape Web服务器的每个连接都使用一个线程。...如果有一种负载分布机制可以检测到服务器没有响应,则该服务器上的负载就可以分布到其 它的Web服务器上,这可能会致使这些服务器一个接一个地用光所有的线程。这样一来,整个服务器组都会被挂起。...4、服务器遭遇恶意攻击破坏互联网时代黑客们充斥网络,网站服务器遭受攻击已经屡见不鲜。任何网站服务器都面临着网络攻击的风险,这个是无法预测也无法避免的,但是我们也要做好防范,将风险降至最低。

2.9K30

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

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

4.6K20

一个 MySQL 隐式转换的坑,差点把服务器崩溃

难道是 MySQL 有 bug 了,必须要研究一下了。 复现当时的情景 假设有两张表,这两张表的结构和数据是下面这样的。 第一张 user表。...根源所在 相信有的同学已经猜出来了,这里是 MySQL 进行了隐式转换,由于查询条件后面跟的查询值是整型的,所以 MySQL 将 order_code字段进行了字符串到整数类型的转换,而转换后的结果正好是...MySQL 官方文档有以下几条关于隐式转换的规则: 1、两个参数至少有一个是 NULL 时,比较的结果也是 NULL,例外是使用 对两个 NULL 做比较时会返回 1,这两种情况都不需要做类型转换...decimal 后进行比较,如果另外一个参数是浮点数(一般默认是 double),则会把 decimal 转换为浮点数进行比较; 在不同的数值类型之间,总是会向精度要求更高的那一个类型转换,但是有一点要注意,在MySQL...但是,当查询条件后面的值类型不是 varchar,而是数值类型的话,MySQL 首先要对 order_code 字段做类型转换,转换为数值类型,这时候,之前建的索引也就不会命中,只能走全表扫描,查询性能指数级下降

1K20

--MYSQL MGR 崩溃后的修复和问题查找

MYSQL 的 GROUP REPLICATION 估计大多数的公司都没有用,即使用也不是在主要的项目和关键的地方。...所以网上相关MYSQL Group Replicaiton 的的修复的东西也不多。赶巧,最近我们的测试系统的 MGR 崩溃了。...我们的MGR 的测试系统是三台MYSQL 5.7.23 + Proxysql 组成的,曾经坏过一台机器(网络原因),但MGR 稳稳的提供数据库服务,这次的崩溃和上次比,没有那么简单。三台机器挂了两台。...在保存了错误日志后,我尝试恢复,主库,重启启动后可以登录,并且再次重新运行命令,一般你要重新来过,最好要知道,崩溃中的那个库时最后的主库,然后在那个主库上操作下面的命令。...通过这个错误,我至少可以推断出两件事 1 这个服务器想直接加入到集群中,大概率是不大可能了,日志已经跟不上了 2 这个服务器和集群脱离的时间,一定早于集群出现故障的时间。

2.6K50

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

问题 我的 MySQL 偶尔崩溃,如果需要追查原因,应该如何保留现场? 实验 MySQL 随着版本不停迭代,崩溃的现象越来越少,也越来越隐蔽。...一旦遇到生产环境上的 MySQL 崩溃,就需要保留现场信息,供分析用。虽然 MySQL 的 error log 中会打印部分信息,但对于比较隐蔽的崩溃,往往显得力不从心。...因此我推荐开启 coredump,以备 MySQL 诊断需要。 我们来模拟一个崩溃场景,然后配置 coredump 看看效果。 选取一个容易复现崩溃的 bug,我们选择了 bug #95294。...是因为异常崩溃了, error log 中有一段堆栈信息,可以用来判断这个崩溃的问题, 以上是 MySQL 能提供的所有信息,无法针对一些复杂场景进行分析。...结论 通过开启操作系统级别、放开用户限制、启用 MySQL 参数三个步骤,我们启用了 MySQL 的 coredump 功能,使得 MySQL 崩溃时留下了足够的线索。

76620

如何避免美国ASP主机服务器崩溃和故障?

ASP主机服务器是一种用于托管网站的服务器,其特点是可靠性高。但是,即使是最可靠的服务器也会遭受故障或崩溃。在本文中,我们将探讨如何避免美国ASP主机服务器的故障和崩溃。  ...一、定期备份数据  定期备份数据可以帮助您在服务器出现故障或崩溃时恢复数据。备份可以存储在本地磁盘或云存储中。您可以使用备份恢复数据,以便在服务器崩溃后能够快速恢复网站。...未经修补的漏洞会使服务器易受攻击,并导致数据丢失或服务器崩溃。请确保您的服务器软件和操作系统都是最新的,并按照厂商的建议进行更新。  ...图片  五、监控服务器  监控服务器可以帮助您及时发现服务器故障和崩溃,并采取必要的措施。您可以使用监控工具来检测服务器性能、网络流量和磁盘空间等方面的问题。...七、使用可靠的硬件  使用可靠的硬件可以帮助您避免服务器故障和崩溃。请选择品牌知名度高的服务器硬件,并确保其质量和性能都是可靠的。

2.5K20

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

在之前的文章「简单了解InnoDB底层原理」聊了一下MySQL的Buffer Pool。...MySQL 奔溃恢复 这个过程看似没啥问题,实则不讲武德。假设我们修改Buffer Pool中的数据成功,但是还没来得及将数据刷入磁盘MySQL就挂了怎么办?...那不完犊子吗,连数据持久化的保证、事务回滚都做不到还谈什么崩溃恢复? Redo Log & Undo Log 而通过MySQL能够实现崩溃恢复的事实来看,MySQL必定实现了某些骚操作。...MySQL 崩溃恢复 首先,更新数据还是会判断数据是否存在于Buffer Pool中,不存在则加载。...MySQL 崩溃恢复 简单介绍一下2PC,它是一种保证分布式事务数据一致性的协议,它中文名叫两阶段提交,它将分布式事务的提交拆分成了2个阶段,分别是Prepare和Commit/Rollback。

74710

MySQL崩溃后的数据一致性

网络波动、磁盘损坏等现网高频故障,机房掉电、服务器硬件失效等低频却又致命的故障,时刻考验着我们的系统。...不涉及存储的纯计算系统崩溃/失效之后,隔离故障节点或者重启故障节点后就能恢复业务。 存储系统却没有那么简单。...单机数据一致性 MySQL崩溃后,保证单机数据一致性主要包括两个机制:“MySQL binary log和InnoDB redo log的一致性”和“InnoDB数据文件的一致性”。...数据恢复的一个场景是,MySQL崩溃后对数据进行数据恢复,MySQL Server层通过binlog恢复已经写入binlog却没有写入数据文件的数据(简单这么说)。...MySQL崩溃重启后,InnoDB会检查每个块(page)的校验和,判断块是否损坏,如果写入双写缓冲的是坏块,那么一定没有写入实际数据文件,就要用实际数据文件的块来恢复双写缓冲,如果写入了双写缓冲,但是数据文件写的是坏块

2.6K81

尴尬的bug:一条查询语句让MySQL崩溃

这是学习笔记的第 2028 篇文章 前几天睡觉前接到前同事的一个信息,说有个奇怪的SQL问题,想让我帮忙看看,给点建议,我以为是一种非常复杂的SQL,他的反馈能让MySQL崩溃。...mysql> (select sub_tmp.cid, (select count(*) from t10 where pid = sub_tmp.pid ) as new_t10 from t10_sub...select sub_tmp.id,sub_tmp.id from t10_sub as sub_tmp); Empty set (0.00 sec) 而奇怪的是如果查看执行计划,则整条语句会导致当前会话崩溃...server during query 当然这个操作是可以复现,通过这个 写入1条数据 mysql> insert into t10(pid) values('test'); mysql> insert...server during query 可以看到这次结果比较统一,执行计划解析和查询操作都会导致会话崩溃

2.2K30

美团一面:为什么线程崩溃崩溃不会导致 JVM 崩溃

大家好,我是坤哥 网上看到一个很有意思的美团面试题:为什么线程崩溃崩溃不会导致 JVM 崩溃,这个问题我看了不少回答,但发现都没答到根上,所以决定答一答,相信大家看完肯定会有收获,本文分以下几节来探讨...线程崩溃,进程一定会崩溃吗 进程是如何崩溃的-信号机制简介 为什么在 JVM 中线程崩溃不会导致 JVM 进程崩溃 openJDK 源码解析 线程崩溃,进程一定会崩溃吗 一般来说如果线程是因为非法访问内存引起的崩溃...,那么进程肯定会崩溃,为什么系统要让进程崩溃呢,这主要是因为在进程中,各个线程的地址空间是共享的,既然是共享,那么某个线程对地址的非法访问就会导致内存的不确定性,进而可能会影响到其他线程,这种操作是危险的...,所以统一会报 Segment Fault 错误(即段错误),这些都会导致进程崩溃 进程是如何崩溃的-信号机制简介 那么线程崩溃后,进程是如何崩溃的呢,这背后的机制到底是怎样的,答案是信号,大家想想要干掉一个正在运行的进程是不是经常用...(可以通过 -XX:ErrorFile=/var/log/hs_err.log 这样的方式指定),这个文件记录了虚拟机崩溃的重要原因,所以也可以说,虚拟机是否崩溃只要看它是否会产生此崩溃日志文件 总结

2K20

服务器崩溃导致数据库损坏的修复方法

故障服务器上一共16块FC硬盘,单盘容量600G。存储前面板10号和13号硬盘亮黄灯,存储映射到redhat上的卷挂载不上,服务器业务崩溃。...服务器数据恢复流程 通过IBM storage manager/frombyte.com连接到服务器上查看当前存储状态,服务器报告逻辑卷状态失败,再查看物理磁盘状态,发现6号盘报告“警告”,10号和13...服务器数据恢复建议: 一旦服务器出现故障导致了数据丢失,首先应该将出现故障的服务器内所有运行正常的非热备盘进行镜像备份,将存在物理故障的硬盘进行保护,避免磕碰、进水等,如果与条件的可以进行简单处理并借助专业数据恢复工具将故障硬盘里的数据也进行镜像备份...得到镜像数据后需要对数据进行分析,找出原来阵列中的结构参数以便重建服务器阵列及逻辑校验,通过校验后即可成功导出服务器数据。...如果服务器由于未知原因出现崩溃、无法启动等数据丢失问题,切忌非专业人士在非洁净空间内对服务器内的硬盘进行拆卸、更换磁头等数据恢复操作,并且建议服务器管理员将故障硬盘进行妥善保管等待专业的数据恢复工程师进行处理

2.5K40
领券