我有一个在Debian服务器上运行的大型phpBB论坛。在过去的几个月中,我经常发生mySQL崩溃(大约每10-14天一次)。这通过显示“太多连接1040”错误来体现。如果重新启动服务,则会收到错误消息,其中一个phpbb表“被标记为已崩溃,并且最后一次(自动?)修复失败[144]”。
如果我手动登录mysql并在表上运行REPAIR,则可以解决问题-修复需要很长时间-有问题的表具有1.5m +记录。此后,一切运行良好,直到整个过程在10天后重复一次。
如果我运行systemctl 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文件,以防万一发生问题?在这种情况下,我会将其放回原处?给定表的大小,大概该命令将花费很长时间运行?
在尝试之前,我很想了解发生了什么以及此修复程序将做什么。如果有人能解释我将不胜感激:)
提前致谢!
请您参考如下方法:
您已经找到了从ENGINE=MyISAM
切换到ENGINE=InnoDB
的重要原因。
http://mysql.rjweb.org/doc.php/myisam2innodb