当前位置: 首页 > MySQL数据库

mysql innodb异常如何处理

时间:2026-01-25 16:19:46
一、回退重新装mysql

为避免再从其他地方导入这个数据的麻烦,先对当前库的数据库文件做了个备份(/var/lib/mysql/位置)。接下来将Percona server 5.7包进行了卸载,重新安装原先老的5.1.71的包,启动mysql服务,提示Unknown/unsupported table type: innodb,无法正常启动。

11050912:04:27InnoDB:Initializingbufferpool,size=384.0M11050912:04:27InnoDB:CompletedinitializationofbufferpoolInnoDB:Error:logfile./ib_logfile0isofdifferentsize05242880bytesInnoDB:thanspecifiedinthe.cnffile0157286400bytes!11050912:04:27[ERROR]Plugin'InnoDB'initfunctionreturnederror.11050912:04:27[ERROR]Plugin'InnoDB'registrationasaSTORAGEENGINEfailed.11050912:04:27[ERROR]Unknown/unsupportedtabletype:innodb11050912:04:27[ERROR]Aborting11050912:04:27[Note]/usr/sbin/mysqld:Shutdowncomplete

删除/var/lib/mysql/目录,重新启动数据库服务,并初始化,发现正常,show engines能发现有innodb引擎。再将数据库停掉,将之前备份的/var/lib/mysql/目录的内容覆盖当前位置的内容,重启。又发现不能进行启动,报错内容和刚刚一样。

/var/lib/mysql目录内容的结构如下:

-rw-rw----1mysqlmysql104857602月2618:10ibdata1-rw-rw----1mysqlmysql52428802月2618:10ib_logfile0-rw-rw----1mysqlmysql52428802月2617:20ib_logfile1drwx------2mysqlmysql40962月2617:20mysqldrwx------2mysqlmysql40962月2617:24wiki

wiki目录是测试数据的库,ibdata1文件为数据文件,ib开头的两个文件为日志文件,mysql 目录下为系统库相关的东西 。再次使用初始化的数据,并将wiki目录和ibdata1文件覆盖到/var/lib/mysql 目录下,可以正常启动,也可以正常登录。

二、innodb模块重装

不过在通过mysqldump备份时,又提示unknow table engine “Innodb” 。登录后,查看当前所有的引擎类型,发现其中果然不存在innodb类型:

通过alter命令修改其中一个表的类型为MyISAM ,发现仍然报错。

通过 find 查找发现/usr/lib64/mysql/plugin/目录下有ha_innodb_plugin.so文件。印象中mysql5以后的版本支持在线插件安装 。通过下面查看确认,果然支持:

使用如下命令加载时,发现不成功:

installplugininnodbsoname'ha_innodb.so';
三、备份

在/etc/my.cnf中增加如下配置:

plugin-load=innodb=ha_innodb_plugin.soplugin_dir=/usr/lib64/mysql/plugin/default-storage-engine=InnoDB

发现仍启动失败。查看mysql-error.log发现有如下内容:

InnoDB:DatabasepagecorruptionondiskorafailedInnoDB:filereadofpage7.InnoDB:Youmayhavetorecoverfromabackup.InnoDB:ItisalsopossiblethatyouroperatingInnoDB:systemhascorrupteditsownfilecacheInnoDB:andrebootingyourcomputerremovestheInnoDB:error.InnoDB:IfthecorruptpageisanindexpageInnoDB:youcanalsotrytofixthecorruptionInnoDB:bydumping,dropping,andreimportingInnoDB:thecorrupttable.YoucanuseCHECKInnoDB:TABLEtoscanyourtableforcorruption.InnoDB:Seealsohttp://dev.mysql.com/doc/refman/5.1/en/forcing-innodb-recovery.html

打开forcing-innodb-recovery官方页面,发现可以通过指定innodb_force_recovery参数,进行强制启动和恢复。在/etc/my.cnf中增加如下内容:

innodb_force_recovery=6

重新启动成功了。通过mysqldump备份也没有问题,将备份数据导入其他主机发现也正常可以测试。

这下就好搞了,将mysql彻底删除,重新安装Percona server 5.7,安装完后,建库,还原数据,程序重新连接,一切OK。


上一篇:linux上如何安装mysql服务器
下一篇:如何批量修改mysql
mysql innodb
  • 英特尔与 Vertiv 合作开发液冷 AI 处理器
  • 英特尔第五代 Xeon CPU 来了:详细信息和行业反应
  • 由于云计算放缓引发扩张担忧,甲骨文股价暴跌
  • Web开发状况报告详细介绍可组合架构的优点
  • 如何使用 PowerShell 的 Get-Date Cmdlet 创建时间戳
  • 美光在数据中心需求增长后给出了强有力的预测
  • 2027服务器市场价值将接近1960亿美元
  • 生成式人工智能的下一步是什么?
  • 分享在外部存储上安装Ubuntu的5种方法技巧
  • 全球数据中心发展的关键考虑因素
  • 英特尔与 Vertiv 合作开发液冷 AI 处理器

    英特尔第五代 Xeon CPU 来了:详细信息和行业反应

    由于云计算放缓引发扩张担忧,甲骨文股价暴跌

    Web开发状况报告详细介绍可组合架构的优点

    如何使用 PowerShell 的 Get-Date Cmdlet 创建时间戳

    美光在数据中心需求增长后给出了强有力的预测

    2027服务器市场价值将接近1960亿美元

    生成式人工智能的下一步是什么?

    分享在外部存储上安装Ubuntu的5种方法技巧

    全球数据中心发展的关键考虑因素