每当我启动我的Mysql数据库时,我都会在error_log中看到这个:
131015 12:07:06 [注意]插件'FEDERATED'被禁用。 131015 12:07:06 InnoDB:InnoDB内存堆被禁用131015 12:07:06 InnoDB:Mutexes和rw_locks使用Windows互锁功能131015 12:07:06 InnoDB:压缩表使用zlib 1.2.3 131015 12:07:06 InnoDB:初始化缓冲池,大小= 16.0M 131015 12:07:06 InnoDB:完成缓冲池的初始化131015 12:07:06 InnoDB:支持的最高文件格式是Barracuda。 InnoDB:ibdata文件中的日志序列号与InnoDB不匹配:ib_logfiles中的日志序列号! 131015 12:07:06 InnoDB:数据库没有正常关闭! InnoDB:开始崩溃恢复。 InnoDB:从.ibd文件中读取表空间信息... InnoDB:从doublewrite InnoDB恢复可能的半写数据页:缓冲区... 131015 12:07:07 InnoDB:等待后台线程启动131015 12:07 :08 InnoDB:5.5.32开始;日志序列号1595695 131015 12:07:08 [注意]服务器主机名(bind-address):'0.0.0.0'; port:3306 131015 12:07:08 [注意] - '0.0.0.0'解析为'0.0.0.0'; 131015 12:07:08 [注意]在IP上创建的服务器套接字:'0.0.0.0'。
我已经尝试过mysqlcheck -u root -p --repair -A来修复数据库。这报告所有表都是正常的。
我也尝试过将innodb_force_recovery设置为4
我试过SET GLOBAL innodb_fast_shutdown = 1;并关闭数据库。
这些都不会使错误消失。
如何修复数据库中的InnoDB表?
如果MySQL崩溃,LSN(日志序列号)可能不匹配。但如果崩溃恢复过程完成,你应该没问题。如果任何事务修改页面中的数据,则新的LSN将写入页眉。
我会调查每次重启时MySQL崩溃的原因。据我所知/etc/init.d/mysql停止可能需要很长时间,所以如果你重新启动服务器操作系统可能只是杀死mysqld。在这种情况下,您应该在重新启动整个服务器之前手动停止MySQL。
我遇到过同样的问题。
在我的例子中,我通过XAMPP在Windows上运行MySQL并使用XAMPP控件来启动/停止服务器。
似乎XAMPP关闭控制正在杀死MySQL服务器,而不是请求关闭。
innodb_fast_shutdown=0
以配置mysqld以执行完整的摊牌mysqladmin --user=[user] --password=[password] shutdown
用你的root用户详细信息替换[user]
和[password]
如果要关闭MySQL服务器,只需运行.bat文件即可。 XAMPP控制面板检测到关机,因此您可以使用XAMPP控件重新启动。
如果你现在看看你的日志,你会发现错误消失了
或者更好的是,只需将mysql安装为Windows服务即可。
innodb_fast_shutdown
http://dev.mysql.com/doc/refman/5.7/en/innodb-parameters.html#sysvar_innodb_fast_shutdownmysqladmin shutdown
- http://dev.mysql.com/doc/refman/5.7/en/server-shutdown.html