一套测试用的mysql库,之前用的centos6默认源里的mysql5.1.71的版本。后来想试用下Perconaserver5.7,由于这套库里没有什么重要数据。所以操作前也未进行备份,配置好源后,直接就进行了安装。数据文件也存放在默认位置,安装完成后,直接启动mysql,发现启动失败,发现无法启动正常启动。
一、回退重新装mysql
为避免再从其他地方导入这个数据的麻烦,先对当前库的数据库文件做了个备份(/var/lib/mysql/位置)。接下来将Perconaserver5.7包进行了卸载,重新安装原先老的5.1.71的包,启动mysql服务,提示Unknown/unsupportedtabletype:innodb,无法正常启动。
11050912:04:27InnoDB:Initializingbufferpool,size=384.0M 11050912:04:27InnoDB:Completedinitializationofbufferpool InnoDB:Error:logfile./ib_logfile0isofdifferentsize05242880bytes InnoDB:thanspecifiedinthe.cnffile0157286400bytes! 11050912:04:27[ERROR]Plugin'InnoDB'initfunctionreturnederror. 11050912:04:27[ERROR]Plugin'InnoDB'registrationasaSTORAGEENGINEfailed. 11050912:04:27[ERROR]Unknown/unsupportedtabletype:innodb 11050912:04:27[ERROR]Aborting 11050912:04:27[Note]/usr/sbin/mysqld:Shutdowncomplete
删除/var/lib/mysql/目录,重新启动数据库服务,并初始化,发现正常,showengines能发现有innodb引擎。再将数据库停掉,将之前备份的/var/lib/mysql/目录的内容覆盖当前位置的内容,重启。又发现不能进行启动,报错内容和刚刚一样。
/var/lib/mysql目录内容的结构如下:
-rw-rw----1mysqlmysql104857602月2618:10ibdata1 -rw-rw----1mysqlmysql52428802月2618:10ib_logfile0 -rw-rw----1mysqlmysql52428802月2617:20ib_logfile1 drwx------2mysqlmysql40962月2617:20mysql drwx------2mysqlmysql40962月2617:24wiki
wiki目录是测试数据的库,ibdata1文件为数据文件,ib开头的两个文件为日志文件,mysql目录下为系统库相关的东西。再次使用初始化的数据,并将wiki目录和ibdata1文件覆盖到/var/lib/mysql目录下,可以正常启动,也可以正常登录。
二、innodb模块重装
不过在通过mysqldump备份时,又提示unknowtableengine”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.so plugin_dir=/usr/lib64/mysql/plugin/ default-storage-engine=InnoDB
发现仍启动失败。查看mysql-error.log发现有如下内容:
InnoDB:Databasepagecorruptionondiskorafailed InnoDB:filereadofpage7. InnoDB:Youmayhavetorecoverfromabackup. InnoDB:Itisalsopossiblethatyouroperating InnoDB:systemhascorrupteditsownfilecache InnoDB:andrebootingyourcomputerremovesthe InnoDB:error. InnoDB:Ifthecorruptpageisanindexpage InnoDB:youcanalsotrytofixthecorruption InnoDB:bydumping,dropping,andreimporting InnoDB:thecorrupttable.YoucanuseCHECK InnoDB:TABLEtoscanyourtableforcorruption. InnoDB:Seealsohttps://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彻底删除,重新安装Perconaserver5.7,安装完后,建库,还原数据,程序重新连接,一切OK。
上述就是数据库技术:mysql innodb 异常修复经验分享分享的全部内容,如果对大家有所用处且需要了解更多关于mysql数据库学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/dtteaching/914235.html