在mysql的配置文件my.cnf里找到 [mysqld]字段下,添加 innodb_force_recovery = 1

如果innodb_force_recovery = 1不生效,则可尝试2——6几个数字

然后重启mysql,重启成功。然后使用mysqldump或 pma 导出数据,执行修复操作等。修复完成后,把该参数注释掉,还原默认值0。

配置文件的参数:innodb_force_recovery

innodb_force_recovery影响整个InnoDB存储引擎的恢复状况。默认为0,表示当需要恢复时执行所有的恢复操作(即校验数据页/purge undo/insert buffer merge/rolling back&forward),当不能进行有效的恢复操作时,mysql有可能无法启动,并记录错误日志;

innodb_force_recovery可以设置为1-6,大的数字包含前面所有数字的影响。当设置参数值大于0后,可以对表进行select,create,drop操作,但insert,update或者delete这类操作是不允许的。

具体介绍

1(SRV_FORCE_IGNORE_CORRUPT):忽略检查到的corrupt页。

2(SRV_FORCE_NO_BACKGROUND):阻止主线程的运行,如主线程需要执行full purge操作,会导致crash。

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):不执行前滚的操作。

三、解析方案

一般修复方法参考:

第一种方法

建立一张新表:

create table demo_bak  #和原表结构一样,只是把INNODB改成了MYISAM。

把数据导进去

insert into demo_bak select * from demo;

删除掉原表:

drop table demo;

注释掉 innodb_force_recovery 之后,重启。

重命名:

rename table demo_bak to demo;

最后改回存储引擎:

alter table demo engine = innodb

第二种方法

另一个方法是使用mysqldump将表格导出,然后再导回到InnoDB表中。这两种方法的结果是相同的。

备份导出(包括结构和数据):

mysqldump -uroot -p123 test > test.sql

还原方法1:

use test;

source test.sql

还原方法2(系统命令行):

mysql -uroot -p123 test

注意,CHECK TABLE命令在InnoDB数据库中基本上是没有用的。

第三种方法

1、配置my.cnf

配置innodb_force_recovery = 1或2——6几个数字,重启MySQL

2、导出数据脚本

mysqldump -uroot -p123 test > test.sql

导出SQL脚本。或者用Navicat将所有数据库/表导入到其他服务器的数据库中。

注意:这里的数据一定要备份成功。然后删除原数据库中的数据。

3、删除ib_logfile0、ib_logfile1、ibdata1

备份MySQL数据目录下的ib_logfile0、ib_logfile1、ibdata1三个文件,然后将这三个文件删除

4、配置my.cnf

将my.cnf中innodb_force_recovery = 1或2——6几个数字这行配置删除或者配置为innodb_force_recovery = 0,重启MySQL服务

5、将数据导入MySQL数据库

mysql -uroot -p123 test

此种方法下要注意的问题:

1、ib_logfile0、ib_logfile1、ibdata1这三个文件一定要先备份后删除;

2、一定要确认原数据导出成功了

3、当数据导出成功后,删除原数据库中的数据时,如果提示不能删除,可在命令行进入MySQL的数据目录,手动删除相关数据库的文件夹或者数据库文件夹下的数据表文件,前提是数据一定导出或备份成功。

mysql 修复_修复崩溃的Mysql相关推荐

  1. mysql密码@_如何重设MySQL密码

    展开全部 方法一 使用phpmyadmin,这是最简单的了,修改mysql库的user表,不过别62616964757a686964616fe78988e69d8331333361313936忘了使用 ...

  2. 打开和关闭mysql服务器_启动和关闭MySQL服务器

    欢迎进入Linux社区论坛,与200万技术人员互动交流 >>进入 作为MySQL管理员,一个普通的目标就是确保服务器尽可能地处于运行状态,使得客户机能够随时访问它.但是,有时最好关闭服务器 ...

  3. navicat mysql 日志_使用Navicat查看MySQL日志的具体方法

    使用Navicat查看MySQL日志的具体方法 发布时间:2020-05-18 14:04:52 来源:51CTO 阅读:699 作者:三月 下文主要给大家带来使用Navicat查看MySQL日志的具 ...

  4. 零点起飞学mysql视频_零点起飞学MySQL

    第1篇 MySQL基础 第1章 数据库的安装(教学视频:25分钟) 2 1.1 MySQL概述 2 1.1.1 MySQL特性以及历史 2 1.1.2 MySQL的获取 3 1.2 MySQL的安装 ...

  5. centos 查看mysql 服务器配置_在CentOS上MySQL数据库服务器配置方法

    http://www.jb51.net/article/23255.htm ======================== 1 . 无密码登录: mysql -u root 在已经有密码的情况下报错 ...

  6. sysbench mysql测试_使用sysbench对MySQL进行测试

    为什么要测试,测什么东西? 测试的种类非常多,测试的目的也非常多,我这里主要的目的就两个 测试MySQL的极限IO 对比不同版本MySQL,不同参数, 不同硬件,不同系统对MySQL的性能影响 为什么 ...

  7. 远程访问mysql数据库_关于远程连接MySQL数据库的问题解决

    安装MySQL sudo apt-get install mysql-server 这个应该很简单了,而且我觉得大家在安装方面也没什么太大问题,所以也就不多说了,下面我们来讲讲配置. 配置MySQL ...

  8. mysql 安装_源码安装mysql

    源码安装mysql 什么是源码 #! /bin/bash echo 'hello'高级语言 ➡️机器码01001001 源码安装mysql逻辑 1.源码包 ⬇ 2.预编译 1.检查当前的操作系统. 2 ...

  9. npm mysql 事务_一文解读MySQL事务

    经常提到数据库的事务,那你知道数据库还有事务隔离的说法吗,事务隔离还有隔离级别,那什么是事务隔离,隔离级别又是什么呢?本文就帮大家梳理一下. MySQL 事务 本文所说的 MySQL 事务都是指在 I ...

  10. 连接mysql数据库_解决Navicat连接MySQL数据库报错问题

    今天在用Navicat连接另外一台主机上的MySQL时报错: Host is not allowed to connect to this MySQL server 默认安装的mysql无法远程连接是 ...

最新文章

  1. C语言 字符串前加L的意义 如:L“A”
  2. 【BFS】【并查集】【Tarjan】【LCA】Gym - 101173H - Hangar Hurdles
  3. RIA开发权威指南 基于JavaFX(赠品)
  4. c语言如何判断是否是子序列,leetcode392(判断子序列)--C语言实现
  5. 服务器压力测试系列二:服务器监控工具tsar安装
  6. 蓝牙鼠标windows linux,Ubuntu下使用蓝牙无线鼠标[图]
  7. kotlin 调用java_从Kotlin调用Java代码
  8. 通达信自编的选股公式如何使用?
  9. check root android,Root Checker - Check Root
  10. 给加西亚的信——余世维——赢在执行
  11. 掌握计算机基础知识的必要性,浅谈高校开展面向学科门类的计算机基础课程的必要性...
  12. 个人作品 轻航 - 社区商城系统
  13. js进行数学运算,加法,减法,乘法,除法
  14. 一起来玩U3D之基础物理引擎
  15. python怎么找出最大数_python怎么找出最大数
  16. 关于RT thread系统节拍时钟的配置
  17. python单词翻译-python 中英文翻译
  18. AMPL 写成 .nl 文件
  19. 莫队 从零基础到入门 超详细
  20. python miio 连接小米网关_时隔五年小米门窗传感器重磅升级开合光线检测二合一 仅49元...

热门文章

  1. 使用 spring boot 开发通用程序
  2. 给一个ul列表中点击到的li赋予样式
  3. android 52 粘滞广播
  4. ava.lang.UnsatisfiedLinkError:
  5. CHUCK手把手带你搞定OPENSTACK
  6. 堆和栈的差别(转过无数次的文章)
  7. Windows Azure Pack集成配置SPF
  8. Mysql实现非程序控制读写分离
  9. 《爱情公寓2》将播 恶搞宣传片大喊“有种别看”
  10. 详解物联网的中间件:为何说它是不可或缺的?