6

每次启动 Mysql 数据库时,我都会在 error_log 中看到:

131015 12:07:06 [注意] 插件 'FEDERATED' 已禁用。131015 12:07:06 InnoDB:InnoDB 内存堆已禁用 131015 12:07:06 InnoDB:互斥锁和 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:支持的最高文件格式是梭子鱼。InnoDB:ibdata 文件中的日志序列号与 InnoDB:ib_logfiles 中的日志序列号不匹配!131015 12:07:06 InnoDB:数据库未正常关闭!InnoDB:开始崩溃恢复。InnoDB:从 .ibd 文件中读取表空间信息... InnoDB:从双写 InnoDB 恢复可能的半写入数据页:缓冲区... 131015 12:07:07 InnoDB: 等待后台线程启动 131015 12:07:08 InnoDB: 5.5.32 启动;日志序列号 1595695 131015 12:07:08 [注意] 服务器主机名(绑定地址):'0.0.0.0'; 端口: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 表?

4

3 回答 3

1

我通过删除以下文件来解决我的问题"Xampp\mysql\data"

  • ib_logfile0
  • ib_logfile1
  • ibdata1

** 请务必通过以下方式备份您的数据库:

[mysqld]
innodb_force_recovery = 2

(此命令将帮助您以只读模式启动 Mysql。)

于 2019-11-07T09:10:46.713 回答
0

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

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

于 2014-02-10T21:35:17.863 回答
0

I had the same issue.

In my case, I was running MySQL on windows via XAMPP and using the XAMPP controls to start/stop the server.

It appears the XAMPP shutdown control was killing the MySQL server, rather than requesting a shutdown.

Solution

  1. (optional) In my.ini set innodb_fast_shutdown=0 to configure mysqld to perform a full showdown
  2. Create a .bat file, with contents mysqladmin --user=[user] --password=[password] shutdown replacing [user] and [password] with your root user details

When you wish to shutdown the MySQL server, just run the .bat file. The shutdown is detected by XAMPP control panel so you can restart using the XAMPP control.

If you now take a look at your logs, you'll see the errors have gone away

Or better yet, just install mysql as a windows service.

References:

  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
于 2016-01-28T02:27:22.757 回答