首页 > 解决方案 > mysql服务器崩溃,并报告了一个表的问题

问题描述

我有一个在 Debian 服务器上运行的大型 phpBB 论坛。在过去的几个月里,我遇到了周期性的 mySQL 崩溃(大约每 10-14 天)。这通过显示“连接过多 1040”错误来表现出来。如果我重新启动服务,我会收到一个错误,即其中一个 phpbb 表“标记为已崩溃并且最后一次(自动?)修复失败 [144]”。

如果我手动登录 mysql 并在表上运行 REPAIR,这可以解决问题 - 修复需要很长时间 - 有问题的表有 1.5m+ 记录。在此之后,事情运行良好,直到整个事情在 10 天后重复。

如果我运行 asystemctl status mysqld我会看到几行内容:

Jun 05 05:20:01 servername mysqld[1105]: 2020-06-05  5:20:01 140590520212224 [ERROR] mysqld: Table './phpbb_posts' is marked as crashed and last (automatic?) repair failed
Jun 05 05:20:01 servername mysqld[1105]: 2020-06-05  5:20:01 140590520212224 [ERROR] mysqld: Table 'phpbb_posts' is marked as crashed and last (automatic?) repair failed

但如前所述,一切正常。

做一些谷歌搜索,似乎关闭了 mysql 服务并运行:

cd /var/lib/mysql/$DATABASE_NAME
myisamchk -r $TABLE_NAME
myisamchk -r -v -f $TABLE_NAME

可以很好地解决问题。我很乐意尝试——大概我只是事先备份了相关的 DATABASE_NAME 文件,以防出现任何问题?在这种情况下,我只是将它放回原位?考虑到表的大小,该命令可能需要很长时间才能运行?

在我尝试这个之前,我很想了解发生了什么以及这个修复会做什么。如果有人能解释我将不胜感激:)

提前致谢!

标签: mysqlcrashdebianmyisamrepair

解决方案


您找到了从 切换ENGINE=MyISAM到 的一个重要原因ENGINE=InnoDB

http://mysql.rjweb.org/doc.php/myisam2innodb


推荐阅读