Innodb数据库损坏导致mysql锁死
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Innodb数据库损坏导致mysql锁死,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2777字,纯文字阅读大概需要4分钟。
内容图文
问题
MySQL自3.23.58版本以后,提供了名为InnoDB的引擎提供存储过程等功能
当服务器发生意外断电等错误的时候,可能导致innodb锁死
用top命令查看,发现mysqld进程占用cpu达到100%并无法正常启动、关闭
070316 12:30:43 mysqld started
070316 12:30:43 InnoDB: Database was not shut down normally!
InnoDB: Starting crash recovery.
InnoDB: Reading tablespace information from the .ibd files...
InnoDB: Restoring possible half-written data pages from the doublewrite
InnoDB: buffer...
070316 12:30:43 InnoDB: Starting log scan based on checkpoint at
InnoDB: log sequence number 0 2347685.
InnoDB: Doing recovery: scanned up to log sequence number 0 2347685
070316 12:30:43 InnoDB: Error: page 4 log sequence number 0 1516429185
InnoDB: is in the future! Current system log sequence number 0 2347685.
InnoDB: Your database may be corrupt.
解决方案
首先要彻底杀掉所有运行的mysql进程,并暂时停止web服务器,以免再次出发mysql的调用
/etc/init.d/httpd stop
killall -9 mysqld
killall -9 mysqld_safe
现在用ps awxuf命令确认没有mysql相关进程在运行了
到/var/lib/mysql目录下,找到ibdata1、ib_logfile0、ib_logfile1等几个文件,将其改名或者移动走
执行/etc/init.d/mysqld restart重新启动mysqld
这时候再查看log,就会发现innodb的引擎会重建出错的文件
070316 12:41:35 mysqld started
InnoDB: The first specified data file ./ibdata1 did not exist:
InnoDB: a new database to be created!
070316 12:41:35 InnoDB: Setting file ./ibdata1 size to 10 MB
InnoDB: Database physically writes the file full: wait...
070316 12:41:35 InnoDB: Log file ./ib_logfile0 did not exist: new to be created
InnoDB: Setting log file ./ib_logfile0 size to 5 MB
InnoDB: Database physically writes the file full: wait...
070316 12:41:35 InnoDB: Log file ./ib_logfile1 did not exist: new to be created
InnoDB: Setting log file ./ib_logfile1 size to 5 MB
InnoDB: Database physically writes the file full: wait...
InnoDB: Doublewrite buffer not found: creating new
InnoDB: Doublewrite buffer created
InnoDB: Creating foreign key constraint system tables
InnoDB: Foreign key constraint system tables created
070316 12:41:36 InnoDB: Started; log sequence number 0 0
/usr/libexec/mysqld: ready for connections.
Version: ‘4.1.12‘ socket: ‘/var/lib/mysql/mysql.sock‘ port: 3306 Source distribution
现在可以通过top命令确认mysqld是否正常运行。
执行/etc/init.d/httpd start正常启动web服务,并观察mysql是否正常,一般故障可以解决
注意:如果想禁用innodb的功能,可以在/etc/my.cnf里边的[mysqld]部分中,加入如下一行:
skip-innodb
然后重启mysqld服务,即可禁用innodb 。
但是不推荐禁用,如果部分mysql程序调用了存储过程,那么就无法工作了。
Innodb数据库损坏导致mysql锁死
标签:hal setting ssi var info killall ras ash page
本文系统来源:https://www.cnblogs.com/sfqas/p/12181825.html
内容总结
以上是互联网集市为您收集整理的Innodb数据库损坏导致mysql锁死全部内容,希望文章能够帮你解决Innodb数据库损坏导致mysql锁死所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。