首页
学习
活动
专区
圈层
工具
发布

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

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

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

    服务器意外断电MySQL无法启动

    再三询问之下,客户说出一个情况:服务器因信息中心人为原因,最近总是意外断电。更多精彩文章请关注公众号『Pythonnote』或者『全栈技术精选』 what?服务器这么儿戏吗?这么不安全吗?...2.检查服务运行状态,发现 MySQL 容器一直处于尝试重启状态。3.检查 docker 日志,筛选 MySQL 容器报错部分。4.提示:数据库由于非正常情况关闭,正在尝试恢复,重新启动。...只能寄希望于断电那一刻的数据恢复了。...但此时并不代表正常,因为此时数据库所有表的状态为锁定只读状态。我们只需要将此时的数据导出备份即可。8.导出最后一刻数据库后,将其导入到另一备用数据库中,恢复数据接入系统正常使用。...1.重新启动 mysql 之后表都是只读状态,此时可以备份数据库2.将备份文件导入到新的数据库中更多精彩文章请关注公众号『Pythonnote』或者『全栈技术精选』 4.后记 生产环境所有操作必须三思而后行

    9.6K20

    MySQL断电恢复的一点简单分析

    今天有个网友问我一个MySQL的恢复问题。提供的截图如下。 对于这个问题,在一些断电的场景下还是可能出现的。我首先是要确认是否为线上业务还是测试环境,线上业务来说这个影响还是很大的。...如果数据库无法启动,首要任务还是把数据库启动,然后在这个基础上查看丢失的数据程度,安排数据修复的事宜。 当然从我的角度来说,怎么去快速复现这个问题呢。...默认情况下双1指标是开启的,我们直接模拟断电重启,看看后台的处理情况: 2017-09-13 15:05:11 35556 [Note] InnoDB: Highest supported file format...可以看到后台检测到了上次的异常宕机,然后开启崩溃恢复,InnoDB检测到日志LSN是1625987 而系统数据文件ibd的LSN为1625987 ,和ib_logfiles里面的LSN不匹配。...完成后我们重启数据库。 这个时候就抛出了和截图类似的错误。

    2.6K100

    MySQL 崩溃恢复过程分析

    天有不测风云,数据库有旦夕祸福。 前面写 Redo 日志的文章介绍过,数据库正常运行时,Redo 日志就是个累赘。 现在,终于到了 Redo 日志扬眉吐气,大显身手的时候了。...读取两次写页面 MySQL 一旦崩溃,Redo 日志就要去拯救世界了(MySQL 就是它的世界),Redo 日志拯救世界的方式就是把还没来得及刷盘的脏页恢复到崩溃之前那一刻的状态。...正常状态指的是 MySQL 崩溃之前,数据页最后一次正确的刷新到磁盘的状态。...undo slot 关联了 undo 段,说明数据库崩溃时,undo 段中的事务还没有完成,事务状态可能是以下 3 种之一: TRX_STATE_ACTIVE,表示事务还没有进入提交阶段。...总结 MySQL 崩溃恢复过程的核心工作有 2 点: 对于 MySQL 崩溃之前还没有刷新到磁盘的数据页(也就是脏页),用 Redo 日志把这些数据页恢复到 MySQL 崩溃之前那一刻的状态,这相当于对脏页进行一次刷盘操作

    2.1K11

    机器断电导致Oracle数据库损坏的解决方法介绍

    服务器数据恢复故障 北京某公司的一台服务器,上层数据类型为Oracle数据库,由于服务器意外断电,导致数据库报错,报错内容为“system01.dbf需要更多的恢复来保持一致性”。...由于客户的数据库并没有备份,仅有一些断断续续的归档日志,现在只能通过数据恢复手段来修复Oracle数据库。 数据恢复常规流程 1. 检测数据库故障情况; 2. 尝试挂起并修复数据库 3....解析数据库文件 4. 导出并验证恢复的数据库文件 检测服务器及数据库情况 首先利用dbv命令检测数据文件是否是完整的。...挂起并修复数据库 北亚数据恢复工程师在数据恢复专用服务器上搭建了一组Windows server 2008 x86环境,并安装了和客户原服务器上相同的数据库环境,尝试将数据库挂起来,查看数据库的报错情况...如下图所示: 服务器数据恢复;Oracle数据库修复8.png 北亚数据恢复中心工程师获取到数据库数据后在数据恢复专用服务器内搭建数据库环境,创建数据库、用户、分配表空间等。

    2.2K30

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

    MYSQL 的 GROUP REPLICATION 估计大多数的公司都没有用,即使用也不是在主要的项目和关键的地方。...所以网上相关MYSQL Group Replicaiton 的的修复的东西也不多。赶巧,最近我们的测试系统的 MGR 崩溃了。...我们的MGR 的测试系统是三台MYSQL 5.7.23 + Proxysql 组成的,曾经坏过一台机器(网络原因),但MGR 稳稳的提供数据库服务,这次的崩溃和上次比,没有那么简单。三台机器挂了两台。...在保存了错误日志后,我尝试恢复,主库,重启启动后可以登录,并且再次重新运行命令,一般你要重新来过,最好要知道,崩溃中的那个库时最后的主库,然后在那个主库上操作下面的命令。...后面因为2号机的数据库还是正常的,所以直接resetart 1号MYSQL,下面的图也就是后边备份1号机在备份的时候,和XTRABACKUP PERPARE 的时候异常慢的一个原因。

    3.3K50

    最好用的Mysql数据库客户端Sequel Pro使用及崩溃解决方案

    今天给大家推荐一款我用了多年,感觉非常好用的Mysql客户端——Sequel Pro,开源客户端,目前只有Mac版本。...推荐这款软件的原因很简单,就是最近用它连接Mysql 8时直接崩溃,通过各种途径终于找到解决方案了。没有了崩溃的bug,才更值得推荐。 下面就来简单了解一下这款软件的功能吧。.../wp-content/uploads/2020/03/sequel-2.jpg)] ①位置可以选择数据库,点击进去可以创建数据库。...在Mac系统下会出现关闭崩溃、连接Mysql 8 崩溃等问题。 那么,如何解决呢?花了一上午的时间终于找到解决方案了。...原文链接:《最好用的Mysql数据库客户端Sequel Pro使用及崩溃解决方案》

    7.3K30

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

    问题 我的 MySQL 偶尔崩溃,如果需要追查原因,应该如何保留现场? 实验 MySQL 随着版本不停迭代,崩溃的现象越来越少,也越来越隐蔽。...一旦遇到生产环境上的 MySQL 崩溃,就需要保留现场信息,供分析用。虽然 MySQL 的 error log 中会打印部分信息,但对于比较隐蔽的崩溃,往往显得力不从心。...我们先安装一个 5.7 的数据库, 将其停掉,按照 bug #95294 的描述变更配置, 手工启动 mysqld,可以看到 mysqld 无声无息的退出了, 检查 error log,可以看到 MySQL...是因为异常崩溃了, error log 中有一段堆栈信息,可以用来判断这个崩溃的问题, 以上是 MySQL 能提供的所有信息,无法针对一些复杂场景进行分析。...结论 通过开启操作系统级别、放开用户限制、启用 MySQL 参数三个步骤,我们启用了 MySQL 的 coredump 功能,使得 MySQL 崩溃时留下了足够的线索。

    1.1K20

    糟了,数据库崩了,又好像没崩

    ,会不会因为突然断电,导致数据库崩了”。...但有一个问题,如果数据在写入磁盘文件中途断电怎么办?当来电恢复后,我们重启数据库,发现数据不一致,又该如何处理。...MySQL 设计有健壮的恢复机制,特别是使用 InnoDB 存储引擎的情况下,它能够在断电后重启而不会崩溃。InnoDB 存储引擎使用预写日志(WAL)机制来确保数据的一致性和原子性。...如果需要回滚事务或在执行事务时还未提交,数据库就发生了崩溃,这时我们就需要将未提交事务前的数据回滚回去,难道这个操作有我们自己来做吗?显然 MySQL 也考虑到了这一点。...断电故障恢复案例OK,假如我们正在使用 MySQL 添加数据。在提交事务的过程中,突然发生了断电,那么这个数据会丢吗?

    1.3K51

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

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

    1.8K11

    数据库MySQL服务状态经常崩溃停止,一个自动化命令就可以解决

    我们建站的时候经常会碰到数据库崩溃停止的情况,可以使用 Shell 脚本来检测 MySQL 服务状态并在需要时重启它。...通用方案 编写脚本:创建一个脚本文件,例如 restart_mysql.sh,并编写以下内容: #!/bin/bash # 检查MySQL进程是否在运行 if !...else echo "MySQL服务重启失败,请检查日志以获取更多信息。" fi else echo "MySQL进程正在运行。"...大部分人都会使用宝塔面板进行管理网站,所以我们直接进入宝塔面板的计划任务中,添加Shell脚本,代码和上面的一样,只是不需要设置执行权限和定时任务,因为这里都是可以设置的,如图: 设置好了之后我们关闭数据库测试看看...这样测试确定没问题后,以后就不用自己手动去重启数据库了! 注意事项 检查路径:确保 systemctl 和 mysql 在您的系统中的路径正确。

    2K21

    MySQL崩溃后的数据一致性

    作为互联网公司使用得最多的通用数据库系统,MySQL,在数据一致性方面就有较多的考虑,同时也给了用户较多的设置选项,用来满足不同业务场景下数据一致性和性能的需求(业务需要对数据一致性和性能做权衡,这里不展开...单机数据一致性 MySQL崩溃后,保证单机数据一致性主要包括两个机制:“MySQL binary log和InnoDB redo log的一致性”和“InnoDB数据文件的一致性”。...数据库执行更改的所有操作相关的信息。...数据恢复的一个场景是,MySQL崩溃后对数据进行数据恢复,MySQL Server层通过binlog恢复已经写入binlog却没有写入数据文件的数据(简单这么说)。...MySQL崩溃重启后,InnoDB会检查每个块(page)的校验和,判断块是否损坏,如果写入双写缓冲的是坏块,那么一定没有写入实际数据文件,就要用实际数据文件的块来恢复双写缓冲,如果写入了双写缓冲,但是数据文件写的是坏块

    3.3K81

    MySQL 的 Doublewrite:被低估的“幕后英雄”

    在日常的数据库操作中,我们常常会遇到各种意外情况:系统断电、操作系统崩溃、硬件故障等。这些异常情况可能导致数据库页面写入不完整,进而引发数据丢失或损坏。...很多人第一次听说它也都是在排查性能问题或学习崩溃恢复原理时偶然瞥见。 今天,我们就来探讨一下MySQL是如何通过Doublewrite机制来解决这一棘手问题的。 1....如果在写入过程中发生断电、系统崩溃或磁盘故障,就可能出现“只写了前 8KB,后 8KB 还是旧数据”的情况——整个页处于损坏状态。...步骤 4:关闭 Doublewrite [mysqld] innodb_doublewrite = OFF 步骤 5:充分测试 通过模拟崩溃(kill -9 mysqld)、强制断电(在测试环境)、检查重启后是否能正常恢复...虽然这带来了一定的性能开销,但在数据库的世界里,性能固然重要,数据一致性与持久性才是基石。

    55610

    尴尬的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.6K30

    MySQL数据库(一):安装MySQL数据库

    安装环境: 操作系统版本:RHEL 6.5 安装版本:MYSQL 5.1 升级版本:MYSQL 5.6 一、简述MYSQL 1.什么是数据库?...DB DataBase :数据库 依照某种数据模型进行组织并存放到存储器的数据集合 DBMS DataBase Manager System :数据库管理系统 用来操作和管理数据库的大型服务软件...DBS DataBase System :数据库系统 即DB+DBMS指带有数据库并整合了数据库管理软件的计算机系统 2.E-R数据模型 3.常见数据库软件服务商 甲骨文:MYSQL...[确定] 6.登陆mysql并查询当前数据库 [root@svr5 mysql]# mysql ERROR 1045 (28000): Access denied for user 'root'@'localhost...需要注意的是这里的root用户不是Linux系统的root用户,而是mysql数据库的管理员root。

    29.7K80

    MySQL数据库介绍——初始数据库MySQL

    写在前面: 哈喽大家好我是网络豆云计算运维人员,本系列文章主要给大家讲解MySQL数据库的一些操作,从入门到精通,本文讲解的是MySQL数据库的认识。和我一起进入数据库的世界吧!...一.数据库基础知识 Mysql是⼀个开放源代码的数据库管理系统(DBMS) ,它是由 Mysql AB 公司开发、发布并⽀持的。...Mysql 是⼀个跨平台的开源关系数据库管理系统,⼴泛地应⽤ 在 Internet 上的中⼩型⽹站公司开发中。 数据库是由⼀批 数据 构成的 有序 的 集合 。...mysql> CREATE TABLE student -> ( -> student_id INT UNSIGNED, -> name VARCHAR(30), -> sex CHAR(1),...现在只是定义了⼀张表格,但并没有任何数据,接下来这条 SQL 声明语 句,将在 student 表中插⼊⼀条记录: mysql> INSERT INTO student(student_id,name

    6.9K10
    领券