强制进行innodb恢复(数据库崩溃恢复)

经常接触数据库的难免遇到数据库崩溃的问题,另外发现使用windows的,遇到的几率会高点。

  1. 问题描述,mysql/mariadb突然就不能访问了,然后也无法启动,查看数据库日志,报些莫名奇妙的错误。
[ERROR] mysqld got exception 0x80000003 ;
This could be because you hit a bug. It is also possible that this binary
or one of the libraries it was linked against is corrupt, improperly built,
or misconfigured. This error can also be caused by malfunctioning hardware.To report this bug, see https://mariadb.com/kb/en/reporting-bugs
  1. 如果有备份(比如热备,binlog等),则直接恢复。本文针对的不是这类场景。
  2. 更多时候没有备份,或者测试环境,可以使用强制innodb恢复的方法。下面的内容摘录翻译自官方mysql文档, 英文可以的可以直接移步到官网。

3.1 一切开始之前,先备份物理文件,如mysql的data目录,以防损坏时可以恢复。
3.2 修改mysql的配置文件,mysql.ini中的 innodb_force_recovery选项,该选项可取 0-6

innodb_force_recovery允许的非零取值范围为1到6,取值越大包含了较小值的功能。例如,取值为3包含了取值为1和2的所有功能。
如果在innodb_force_recovery值为3或更小的情况下能够成功导出表格数据,那么相对来说只有一些存在损坏的页面上的数据丢失。取值为4或更大的情况被认为是危险的,因为数据文件可能会被永久损坏。取值为6被认为是极端的,因为数据库页面会处于过时状态,这可能会对B树和其他数据库结构引入更多的损坏。因此尝试时需要从1开始,尝试是否可以启动数据库,如果不能启动慢慢加大此值,直到可以启动数据库。

  • 0:默认值(不启用强制恢复),也就是平时正常运行时的配置;
  • 1:(SRV_FORCE_IGNORE_CORRUPT)当检测到损坏页面时,允许服务器继续运行;
  • 2:(SRV_FORCE_NO_BACKGROUND)阻止主线程和任何清理线程的运行。如果在清理操作期间出现意外退出,这个恢复级别可以预防;
  • 3:(SRV_FORCE_NO_TRX_UNDO)在崩溃恢复后不执行事务回滚;
  • 4:(SRV_FORCE_NO_IBUF_MERGE)阻止插入缓冲合并操作;
  • 5:(SRV_FORCE_NO_UNDO_LOG_SCAN)在启动数据库时不查看撤消日志:即使是不完整的事务,InnoDB也将其视为已提交;
  • 6:(SRV_FORCE_NO_LOG_REDO)在恢复过程中不执行重做日志的向前回滚操作;

3.3 启动数据库后就可以借助mysqldump工具,或者数据库管理软件导出自己的库表数据。
3.4 如果知道是那个表导致的崩溃,同时上面的值小于4时,则可以尝试删除该表,并从上面的导出的数据进行恢复该表。(如果不知道那个表损坏则移步3.6)
3.5 修改上面的innodb_force_recovery选项,注释掉,同时也恢复其值为默认值。 然后重启数据库,看看是否可用。

3.6 如果不确定是那个表导致的问题,则直接可以删除mysql的数据目录(注意,此操作会删除数据库的用户,因此也要根据情形选择是否需要备份),然后修改上面的innodb_force_recovery选项,注释掉,同时也恢复其值为默认值。 重启数据库后导入上面导出的数据,并创建用户及权限。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/196288.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何将unity项目托管到github(快速便捷)

如何将unity项目托管到github(快速便捷) 文章目录 如何将unity项目托管到github(快速便捷)前置准备Gitgithubgit-lfs 具体操作1.配置.gitignore文件2.配置.gitattributes3.使用git 前置准备 Git github git-lfs 这些内容省略&…

你的AI生成物侵权了吗?

你的AI生成物侵权了吗? 本文目录: 一、前置背景 1.1、什么是版权 1.2、什么是作品 1.3、什么是创作 1.4、什么是肖像权 1.5、什么是名誉 二、AI生成的作品是否具备版权?如果具备,版权应该属于谁? 三、AI 学习时…

ruby安装(vscode、rubymine)

https://rubyinstaller.org/downloads/ 下载exe安装即可 会弹出 输入3 安装成功 vscode插件市场安装ruby插件 新建一个目录,打开terminal bundle init //进行初始化(如果执行不了,应该是环境变量没生效,重启vscode&#…

WT2605C语音芯片的无缝循环功能在产品设计中的应用介绍

随着科技的飞速发展,语音芯片已经成为许多产品不可或缺的一部分。而在这些功能中,无缝循环播放功能尤其引人注目,它能够为各种产品带来独特且富有吸引力的用户体验。本文将探讨语音芯片的无缝循环功能可以应用于哪些产品设计上。 1、智能家居…

菜鸟学习日记(python)——数据类型转换

在python中,数据类型的转换有两种方式:隐式类型转换和显示类型转换。 隐式类型转换一般在进行计算时,自动完成转换,显示类型转换一般要用到类型函数来完成转换,它的格式为:数据类型(要转换的数…

使用Docker和Selenium构建自动化测试环境

随着软件开发的日益复杂和迭代速度的加快,自动化测试被越来越广泛地应用于软件开发流程中。它能够提高测试效率、减少测试成本,并保证软件质量的稳定性。在构建自动化测试环境方面,Docker 和 Selenium 是两个非常有用的工具。下面将介绍如何使…

springboot流浪动物救助管理系统源码丨文档+调试+答疑

🍅 简介:500精品计算机源码学习 🍅 欢迎点赞 👍 收藏 ⭐留言 📝 文末获取源码 目录 一、以下学习内容欢迎领取: 二、文档资料截图: 三想了解更多,请收藏、评论、留言:…

项目实战-编写ssm整合配置文件

1、父工程pom.xml <properties><maven.compiler.source>17</maven.compiler.source><maven.compiler.target>17</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><spring.version>…

【每日一题】1038. 从二叉搜索树到更大和树-2023.12.4

题目&#xff1a; 1038. 从二叉搜索树到更大和树 给定一个二叉搜索树 root (BST)&#xff0c;请将它的每个节点的值替换成树中大于或者等于该节点值的所有节点值之和。 提醒一下&#xff0c; 二叉搜索树 满足下列约束条件&#xff1a; 节点的左子树仅包含键 小于 节点键的节点。…

[SaaS] 天猫商品海报生成 灵感艺术家

AIGC在天猫商品海报生成上的探索没有灵感GPT&#xff0c;画不出来SD。https://mp.weixin.qq.com/s/_CkkqoWmHDZ0YqAhmAhL1A天猫在海报图生成上的探索。 技术路线&#xff1a; 初看不觉得什么&#xff0c;细看还真有点不一样&#xff0c;通常我们用canny controlnet是为了控制商…

人工智能发展史

人工智能&#xff08;AI&#xff09;的发展史是一段跨越数十年的旅程&#xff0c;涵盖了从早期理论探索到现代技术革新的广泛内容。人工智能的发展历程展示了从最初的概念探索到现代技术突破的演变。尽管经历了多次起伏&#xff0c;但AI领域持续进步&#xff0c;不断拓展其应用…

【性能测试】资深老鸟总结,常见并发问题汇总(二)

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 1、极限值并发的问…

Unity 性能优化的手段

对象池 使用对象池&#xff1a;频繁地创建和销毁对象会导致性能下降和内存碎片化。对象池可以预先创建一些对象&#xff0c;然后在需要时从池中取出&#xff0c;不再使用时再放回池中。 减少Draw Calls Draw Call是指CPU向GPU发送绘制命令的次数。减少Draw Call可以通过批处理…

【C++】赋值运算符重载

&#x1f490; &#x1f338; &#x1f337; &#x1f340; &#x1f339; &#x1f33b; &#x1f33a; &#x1f341; &#x1f343; &#x1f342; &#x1f33f; &#x1f344;&#x1f35d; &#x1f35b; &#x1f364; &#x1f4c3;个人主页 &#xff1a;阿然成长日记 …

使用 python ffmpeg 批量检查 音频文件 是否损坏或不完整

自用工具&#xff0c;检查下载的音乐是否有损坏 或 下载不完整 使用方法&#xff0c;把 in_dir r’D:\158首无损珍藏版’ 改成你自己的音乐文件夹路径 如果发现文件有损坏&#xff0c;则会在命令行打印错误文件的路径 注意&#xff0c;要求 ffmpeg 命令可以直接在命令行调用…

GPIO的使用--存储系统与位带操作理解

目录 存储系统与位带操作 1、对GPIO的操作函数 2、计算机对地址的管理 3、板子地址 4、什么是位带操作 5、位带地址好处 存储系统与位带操作 1、对GPIO的操作函数 //方案一 GPIO_WriteBit(GPIOF,GPIO_Pin_9,0);//方案二 GPIO_Write(GPIOF,0x0000);//方案三 GPIOF->O…

开放式耳机怎么选?干货分享! 2023好评度超高开放式耳机推荐!

在现代社会中&#xff0c;人们对于音乐和通话的需求越来越高。传统的耳机虽然能够提供良好的音质&#xff0c;但使用过程中存在一些问题&#xff0c;例如长时间佩戴会引起耳朵疲劳和隔绝周围环境的声音。为了解决这些问题&#xff0c;开放式耳机应运而生&#xff0c;成为了一种…

java实现日历效果

java实现打印某年全部的信息 import java.util.Calendar; import java.util.GregorianCalendar;public class shuz {public static int[][] calendarArray(int year,int month) {// 创建Calendar对象并设置日期为2023年8月1日Calendar calendar Calendar.getInstance();calen…

【springboot原理篇】Bean的加载方式,面试必看

&#x1f308;键盘敲烂&#xff0c;年薪30万&#x1f308; 目录 一、上古时代原始方式&#xff1a; &#x1f4d5;XML文件 ~~bean定义 &#x1f440;演示获取bean&#xff1a; ❌缺点&#xff1a; &#x1f4d5;注解方式&#xff1a; ~~component ~~指定扫描路径&#…

vm net 方式 静态ip配置访问主机IP和外网

1、win 11 安装vm&#xff0c;镜像文件 F:\software\VMwork\CentOS-7-x86_64-Everything-1804.iso 2、配置网络 net 方式 3、右击网络--》属性---》更改适配器设置--》vmnet8 属性 如果没有vm1、vm8 虚拟机编辑---》虚拟机网络编辑器-->还原默认设置 注意&#xff1a;这…