一套测试用的mysql库,之前用的centos6默认源里的mysql 5.1.71的版本 。后来想试用下Percona server 5.7,由于这套库里没有什么重要数据 。所以操作前也未进行备份,配置好源后,直接就进行了安装。数据文件也存放在默认位置,安装完成后,直接启动mysql,发现启动失败,发现无法启动正常启动。

一、回退重新装mysql

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

110509 12:04:27 InnoDB: Initializing buffer pool, size = 384.0M110509 12:04:27 InnoDB: Completed initialization of buffer poolInnoDB: Error: log file ./ib_logfile0 is of different size 0 5242880 bytesInnoDB: than specified in the .cnf file 0 157286400 bytes!110509 12:04:27 [ERROR] Plugin 'InnoDB' init function returned error.110509 12:04:27 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.110509 12:04:27 [ERROR] Unknown/unsupported table type: innodb110509 12:04:27 [ERROR] Aborting110509 12:04:27 [Note] /usr/sbin/mysqld: Shutdown complete

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

-rw-rw---- 1 mysql mysql 10485760 2月  26 18:10 ibdata1-rw-rw---- 1 mysql mysql 5242880 2月  26 18:10 ib_logfile0-rw-rw---- 1 mysql mysql 5242880 2月  26 17:20 ib_logfile1drwx------ 2 mysql mysql   4096 2月  26 17:20 mysqldrwx------ 2 mysql mysql   4096 2月 26 17:24 wiki

二、innodb模块重装

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

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

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

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

install plugin innodb soname 'ha_innodb.so';

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

plugin-load=innodb=ha_innodb_plugin.soplugin_dir=/usr/lib64/mysql/plugin/default-storage-engine=InnoDB 
InnoDB: Database page corruption on disk or a failedInnoDB: file read of page 7.InnoDB: You may have to recover from a backup.InnoDB: It is also possible that your operatingInnoDB: system has corrupted its own file cacheInnoDB: and rebooting your computer removes theInnoDB: error.InnoDB: If the corrupt page is an index pageInnoDB: you can also try to fix the corruptionInnoDB: by dumping, dropping, and reimportingInnoDB: the corrupt table. You can use CHECKInnoDB: TABLE to scan your table for corruption.InnoDB: See also http://dev.mysql.com/doc/refman/5.1/en/forcing-innodb-recovery.html

innodb_force_recovery=6

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

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

总结:

由于mysql innodb数据文件的特性,可以在出现问题,无法正常启动时,先将./ib_logfile0 和 ./ib_logfile1 两个日志文件先移走,再启动,如果还不成功,可以用innodb_force_recovery参数进行强制恢复。除此之外,日志也很重启,有问题先看日志。

更多相关文章

  1. 给两到五年经验的Android面试者
  2. 给两到五年经验的Android面试者
  3. 给两到五年经验的Android面试者
  4. Android(安卓)全局异常处理(二)
  5. [置顶] android 捕捉异常
  6. Android(安卓)异常后如何重启应用
  7. Android全局异常统一处理
  8. Android(安卓)webview Not allowed to load local resource异常
  9. 【Android】java.lang.SecurityException: Permission Denial: s

随机推荐

  1. jquery每个添加类中间延迟
  2. Jquery ajax回调函数不执行
  3. 有什么方法可以让jQuery循环在到达终点或
  4. ajax 四级级联菜单(jquery实现)
  5. jquery监听事件on写法以及简单的拖拽效果
  6. 使用ASP时最好不要硬编码url。与JQuery净
  7. 在mvc中多次调用Ajax请求
  8. 请教一下ajax代替frame在后台管理系统布
  9. 在Rails 3中通过.ajax渲染静态部分
  10. 全面解读PHP-JS和jQuery