MySQL服务无法启动出现错误1067,进程意外终止的解决方法

2016/6/24 18:47:08 人评论 次浏览 分类:SQL


问题来源:在给系统打补丁之后就需要重启。第二天发现MySQL服务无法自启动,然后尝试手动重启也不行。提示“windows无法启动mysql服务,位于本地计算机上。错误1067:进程意外终止”。

然后用错误1067:进程意外终止”去百度,按照搜索结果前面操作方法试试,发现还是无法启动mysql服务。网上的哪些各种解决方案都是没有针对性,与其瞎猜乱试,还不如独立思考。

分析:查看事件查看器的日志信息
打开windows 日志-> 应用程序 , 重点看错误和错误上下的信息

信息:InnoDB: Database was not shutdown normally! 
信息:InnoDB: Starting crash recovery. 
信息:InnoDB: Reading tablespace information from the .ibd files
错误:InnoDB: Attempted to open a previously opened tablespace. Previous tablespace gdyuancheng_data/a uses space ID: 12 at filepath: .\gdyuancheng_data\a.ibd. Cannot open tablespace gdyuancheng_temp_data/a which uses space ID: 12 at filepath: .\gdyuancheng_temp_data\a.ibd 

Database was not shutdown normally,说明很有可能是昨晚重启服务器的时候,没有正常停止MySQL服务。
InnoDB: Attempted to open a previously opened tablespace.说明数据的文件损坏了,无法打开文件,导致无法启动MySQL。

解决思路:
既然是数据库损坏了,那么具体是哪个损坏了,应该不可能全部损坏,更加有可能是损坏了mysql的这个基本数据库。找出有问题的数据库进行修复。所以我做了以下的尝试。
1. 在Data的文件夹里面建立命名为“临时文件夹”的文件夹,把Data的文件夹里面的除了mysql之外的文件夹剪切进临时文件夹,这时启动Mysql服务,这时就会发现已经启动成功了如果发现不行,要重启服务器。启动成功之后,然后就停止服务器,将“临时文件夹”里面的文件夹剪切到Data底下。这个时候再启动服务,发现也可以启动。

这么操作的原理是,异常关机导致数据库可能出现错误,但是数据库这么多具体也不知道是哪个数据库错误。在保留mysql这个基础数据库然后启动服务器,会自动进行修复,在修复完成之后,再次把其他库文件夹放回去也就也启动服务了。其实这个方法也是在无奈的情况下试出来,当时也百度找到其他的处理方案都不生效。具体的原因并不知晓。



注意:
如果按照上面的操作还没有办法正常启动的话,先不要怀疑自己,要重启服务器试试,我一开始也是发现无济于事,后面根据我多年的经验果断的重启之后就可以了。
另外对于数据库受损的有的解决方案是通过修改my.ini配置,innodb_force_recovery = 1,但是这种方式治标不治本,建议还是使用本文的解决方式。
查找Data所在的路径的方法:在C:\Program Files\MySQL\MySQL Server 5.6\bin的文件夹的上级目录下有个my.ini的文件,文件中搜索"/data"就可以找到对应的路径。

相关资讯

  • SqlServer通过TRUNCATE快速删除数据库表

    对于需要快速删除数据库的某个表的数据的时候,如果我们使用Delete 的操作删除数百万级以上的数据,一般速度都不理想,而且在执行Delete操作的过程如果发生中断的话就会进行自动的rollback回滚数据。因为在执行delete的操作的时候,数据库时候会将删除的操作记录在数据库日志中…

    2017/1/26 15:31:56
  • mysql的innodb_force_recovery参数说明

    innodb_force_recovery影响整个InnoDB存储引擎的恢复状况。默认为0,表示当需要恢复时执行所有的恢复操作。当不能进行有效的恢复操作时,mysql有可能无法启动,并记录下错误日志。

    2016/5/28 15:26:38