mysql 启动失败,数据恢复
2017年02月13日 16:46:36

阅读数:621

Forcing InnoDB Recovery提供了6个等级的修复模式,需要注意的是值大于3的时候,会对数据文件造成永久的破坏,不可恢复。六个等级的介绍摘抄如下:

Forcing InnoDB Recovery


1 (SRV_FORCE_IGNORE_CORRUPT)
 
Lets the server run even if it detects a corrupt page. Tries to make SELECT * FROM tbl_name jump over corrupt index records and pages, which helps in dumping tables.
 
2 (SRV_FORCE_NO_BACKGROUND)
 
Prevents the master thread and any purge threads from running. If a crash would occur during the purge operation, this recovery value prevents it.
 
3 (SRV_FORCE_NO_TRX_UNDO)
 
Does not run transaction rollbacks after crash recovery.
 
4 (SRV_FORCE_NO_IBUF_MERGE)
 
Prevents insert buffer merge operations. If they would cause a crash, does not do them. Does not calculate table statistics. This value can permanently corrupt data files. After using this value, be prepared to drop and recreate all secondary indexes.
 
5 (SRV_FORCE_NO_UNDO_LOG_SCAN)
 
Does not look at undo logs when starting the database: InnoDB treats even incomplete transactions as committed. This value can permanently corrupt data files.
 
6 (SRV_FORCE_NO_LOG_REDO)
 
Does not do the redo log roll-forward in connection with recovery. This value can permanently corrupt data files. Leaves database pages in an obsolete state, which in turn may introduce more corruption into B-trees and other database structures.

使用方法如下,在mysql配置文件中,添加或修改以下配置的值

my.cnf


[mysqld]
innodb_force_recovery = 1

根据查到的博文提到的方法,我的修复步骤如下:

  • 因为我无法启动mysql,所以首先要想办法启动mysql,然后dump数据。从innodb_force_recovery的值1开始尝试,看mysql能否在该修复模式下启动,不到万不得已,不要尝试值为4及以上。
  • 在我这里,mysql在值为2时可以启动,这是stop掉数据库,然后备份数据

sudo service mysql stop
mysqldump -u root -p --all-databases > all-databases.sql
  • 删除掉出错的数据文件

mv ib_logfile0 ib_logfile0.bak
mv ib_logfile1 ib_logfile1.bak
mv ibdata1 ibdata1.bak
  • 启动mysql,然后从备份文件恢复数据

sudo service mysql start
mysql -u root -p < all-databases.sql
  • 因为在修复模式下,在插入数据时报错,也就是说此时是不能写入数据的。所以就关闭掉了修复模式

[mysqld]
innodb_force_recovery = 0

restart mysql后,再次恢复数据


sudo service mysql restart
mysql -u root -p --default-character-set=utf8 < all-databases.sql
  • 再次重启下mysql,现在mysql可以正常启动了,并且数据也回复成功。

mysql 启动失败,数据恢复的更多相关文章

  1. MySQL安装过程net start mysql 启动失败 报“错误2,系统找不到文件”的解决办法

    MySQL安装过程net start mysql 启动失败 报“错误2,系统找不到文件”的解决办法 错误2,系统找不到文件. 开始...运行... regedit  注册表项: HKEY_LOCAL_ ...

  2. Mysql启动失败解决方案 - 个人经验可能不适合所有场景

    以前一直用的Mysql5.5,安装程序是一个exe程序,安装完了相应的服务也给我注册好了,然后直接启动连接即可. 最近升级到了8.0.15,发现和以前不一样了. 8.0.15下载地址 安装解压之后目录 ...

  3. XAMPP中Apache和Mysql启动失败问题总结

    一.Apache启动失败 xampp启动时显示的错误为: 9:52:41  [Apache]  Attempting to start Apache app... 9:52:41  [Apache]  ...

  4. Linux下mysql启动失败

    原因:强制重启服务器之后,发现mysql启动 失败 解决方法:强制清空 报错路径下的tmp文件,清空之后在tmp下面新建一个文件夹,文件夹的名字在你清空tmp之后启动mysql系统会给你提示 欧克,完 ...

  5. win10 MySQL启动失败问题

    系统升级到win10之后,本地装的MySQL却突然不能启动,系统显示明明就有,可是总是启动失败.在这里解决一下: 解决win10  mysql服务消失,连接不上的问题,注意:以管理员身份运行DOS命令 ...

  6. mysql 启动失败

    1 mysql 启动时报:MySQL Daemon failed to start.并且启动失败 2 查看mysql log日志  less /var/log/mysqld.log 3 从两行erro ...

  7. Mysql启动失败 MYSQL:The server quit without updating PID file

    MySQL5.6启动时出错 提示MYSQL:The server quit without updating PID file 首先执行 /bin/mysqld_safe --user=mysql & ...

  8. mysql启动失败问题记录

    net start mysql 启动mysql服务,启动失败: 手动启动服务,又失败 命令查看日志:mysqld --console 在网上找了解决办法如下: 找到mysql目录,进去bin目录,找到 ...

  9. 小记一次mysql启动失败没有日志的处理

    本来mysql好的,之前清理了一次tmp下的东西,mysql在查询的时候提示: Can't create/write to file '/tmp/ib0n3frL 然后停止启动: [root@sevc ...

随机推荐

  1. Asp.net core 学习笔记 2.1 升级到 2.2

    首先跟着官网 step by step https://docs.microsoft.com/en-us/aspnet/core/migration/21-to-22?view=aspnetcore- ...

  2. 雷林鹏分享:jQuery EasyUI 数据网格 - 创建自定义视图

    jQuery EasyUI 数据网格 - 创建自定义视图 在不同的情况下,您可能需要为数据网格(datagrid)运用更灵活的布局.对于用户来说,卡片视图(Card View)是个不错的选择.这个工具 ...

  3. three.js 第二篇:场景 相机 渲染器 物体之间的关系

    w我用画画来形容他们之间的关系 场景就是纸张 相机就是我们的眼睛 物体就是在我们脑海中构思的那个画面 渲染器就是绘画这个动作 场景(Scene): 初始化:var scene = new THREE. ...

  4. Linux出现wrong ELF class: ELFCLASS64

    安装软件时出现问题   ×.so.×:wrong ELF class: ELFCLASS64 ,大致的意思是软件是32位的,需要32位的 ×.so.×动态链接库,而系统是64位的所提供的该 动态链接库 ...

  5. 『Python CoolBook』C扩展库_其五_C语言层面Python库之间调用API

    点击进入项目 一.C层面模块添加API 我们仍然操作如下结构体, #include <math.h> typedef struct Point { double x,y; } Point; ...

  6. jvm回收器回收过程一:CMS和 G1的初认知(持续更新中)

    CMS:介绍: 1.CMS(Concurrent Mark-Sweep)是以牺牲吞吐量为代价来获得最短回收停顿时间的垃圾回收器.对于要求服务器响应速度的应用上,这种垃圾回收器非常适合. 在启动JVM参 ...

  7. Nginx配置中的log_format用法梳理(设置详细的日志格式)

    nginx服务器日志相关指令主要有两条:一条是log_format,用来设置日志格式:另外一条是access_log,用来指定日志文件的存放路径.格式和缓存大小,可以参加ngx_http_log_mo ...

  8. cl 命令行配置

    VS2013啊什么老是要license,而且打开还特别庞大. 当想测试一个小东西的时候,我并不需要创建一个很大的工程,只需要编译下,运行下即可. 这时候采用 cl 命令编译会快很多. 下面是步骤: 1 ...

  9. 内存泄漏 tensorflow

    http://blog.csdn.net/qq_25737169/article/details/78125550

  10. Msfvenom学习总结

    1.    –p (- -payload-options) 添加载荷payload. 载荷这个东西比较多,这个软件就是根据对应的载荷payload生成对应平台下的后门,所以只有选对payload,再填 ...