ibdata文件中的日志序列号不匹配

问题描述 投票:5回答:2

每当我启动我的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 recovery
2个回答
0
投票

如果MySQL崩溃,LSN(日志序列号)可能不匹配。但如果崩溃恢复过程完成,你应该没问题。如果任何事务修改页面中的数据,则新的LSN将写入页眉。

我会调查每次重启时MySQL崩溃的原因。据我所知/etc/init.d/mysql停止可能需要很长时间,所以如果你重新启动服务器操作系统可能只是杀死mysqld。在这种情况下,您应该在重新启动整个服务器之前手动停止MySQL。


0
投票

我遇到过同样的问题。

在我的例子中,我通过XAMPP在Windows上运行MySQL并使用XAMPP控件来启动/停止服务器。

似乎XAMPP关闭控制正在杀死MySQL服务器,而不是请求关闭。

  1. (可选)在my.ini中设置innodb_fast_shutdown=0以配置mysqld以执行完整的摊牌
  2. 创建一个.bat文件,内容mysqladmin --user=[user] --password=[password] shutdown用你的root用户详细信息替换[user][password]

如果要关闭MySQL服务器,只需运行.bat文件即可。 XAMPP控制面板检测到关机,因此您可以使用XAMPP控件重新启动。

如果你现在看看你的日志,你会发现错误消失了

或者更好的是,只需将mysql安装为Windows服务即可。

参考文献:

  1. innodb_fast_shutdown http://dev.mysql.com/doc/refman/5.7/en/innodb-parameters.html#sysvar_innodb_fast_shutdown
  2. mysqladmin shutdown - http://dev.mysql.com/doc/refman/5.7/en/server-shutdown.html
© www.soinside.com 2019 - 2024. All rights reserved.