innodb引发的mysql数据库崩溃恢复

简单记录一下遇到的innodb引发的mysql数据库崩溃问题的处理过程

一、问题排查

1、问题现象

数据库连不上,发现服务端没起来

2、终端排查

指令:sudo systemctl status mysql.service

结果:报错

指令:sudo systemctl start mysql.service

结果:失败

指令:

3、查看日志

日志位置:/var/log/masql/error.log

查看方法: sudo vi error.log 或 sudo gedit error.log

结果:发现innodb崩溃

二、强行启动

1、my.conf

位置:etc/mysql/my.cnf

用途:配置文件

2、innodb_force_recovery

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

当设置innodb_force_recovery大于0后,可以对标进行select、create、drop操作,但insert、update或者delete这类操作不允许执行。

3、修改并尝试启动

格式:

my.conf文件内添加:

mysqld

innodb_force_recovery = 1~6

逐步增大,直到成功启动mysql

修改指令:sudo vi/gedit my.cnf

启动命令:sudo systemctl start mysql.service

三、排除问题

1、备份数据库

mysqldump -uroot -ppassword databasename > databasename.sql

2、删除数据库

进入mysql:mysql -uroot -ppassword

查看数据库:show databases

删除数据库:drop databasename

3、无法通过指令删除时强制删除数据库

数据库一般位置:/var/lib/mysql/databasename

4、删除ib文件

备份后删除 ib_logfile0 ib_logfile1 ibdata1

位置 /var/lib/mysql

5、修改设定值

innodb_force_recovery 该为0或直接注释或删除

四、恢复数据

1、重启mysql

sudo systemctl start mysql.service

2、恢复数据

把备份的sql文件导回去

相关推荐
帧栈16 分钟前
mysql基础(一)快速上手篇
mysql
丶意冷1 小时前
mybatisPlus分页方言设置错误问题 mybatisPlus对于Oceanbase的Oracle租户分页识别错误
java·数据库·oracle·oceanbase
时序数据说3 小时前
为什么时序数据库IoTDB选择Java作为开发语言
java·大数据·开发语言·数据库·物联网·时序数据库·iotdb
戒不掉的伤怀3 小时前
【Navicat 连接MySQL时出现错误1251:客户端不支持服务器请求的身份验证协议;请考虑升级MySQL客户端】
服务器·数据库·mysql
cv高级工程师YKY3 小时前
服务器 - - QPS与TPS介绍
数据库
nbsaas-boot3 小时前
高可扩展属性建模设计:架构师的全局思考与落地方案
数据库
爱上语文3 小时前
Redis基础(5):Redis的Java客户端
java·开发语言·数据库·redis·后端
陈敬雷-充电了么-CEO兼CTO4 小时前
推荐算法系统系列>推荐数据仓库集市的ETL数据处理
大数据·数据库·数据仓库·数据挖掘·数据分析·etl·推荐算法
MeshddY4 小时前
(超详细)数据库项目初体验:使用C语言连接数据库完成短地址服务(本地运行版)
c语言·数据库·单片机
wuxinyan1234 小时前
Java面试题033:一文深入了解MySQL(5)
java·数据库·mysql·面试