mysql - 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 文件,以防出现任何问题?在这种情况下,我只是将它放回原位?考虑到表的大小,该命令可能需要很长时间才能运行?
在我尝试这个之前,我很想了解发生了什么以及这个修复会做什么。如果有人能解释我将不胜感激:)
提前致谢!
解决方案
您找到了从 切换ENGINE=MyISAM
到 的一个重要原因ENGINE=InnoDB
。
推荐阅读
- laravel - AWS Beanstalk Laravel 部署后挂钩没有这样的文件或目录
- javascript - Javascript如何循环一个我们不知道里面有多少嵌套数组的json数组?
- c# - 如何在 xamarin 表单中显示模型错误表单 web api
- git - git pull: fatal: refusing to merge unrelated histories
- php - 尝试使用 mysqli 在 PHP 7.3 中启动事务时出现致命错误
- node.js - 节点 multer 使用邮递员发布表单数据 - 未收到任何正文
- android - 材料设计中的 MaterialButton 阴影
- hibernate - 将 SQL 转换为 JPA 规范
- flutter - dartfmt vs dart 格式 vs 颤振格式
- sql-server - 通过 Direct Query 连接到 Azure 专用 SQL 池的 Power BI 报表性能缓慢