磁盘空间不足:我的实时应用程序mysql数据库是否会损坏?

磁盘空间不足:我的实时应用程序mysql数据库是否会损坏?,mysql,ubuntu,drupal,disk,hard-drive,Mysql,Ubuntu,Drupal,Disk,Hard Drive,我有一个大型Drupal 7站点,有许多并发登录用户运行在最近磁盘空间耗尽的服务器上(Ubuntu 16.04上Memcached后面的MySQL InnoDB)。这是怎么发生的/为什么发生的是另一天的讨论 我已经解决了磁盘空间问题,就一般交互而言,该站点似乎运行良好,但Drupal日志中充满了如下错误: 未捕获异常“PDOException”,消息为“SQLSTATE[HY000]:一般错误:3在/var/www/pixelsascher.com/public_html/includes/da

我有一个大型Drupal 7站点,有许多并发登录用户运行在最近磁盘空间耗尽的服务器上(Ubuntu 16.04上Memcached后面的MySQL InnoDB)。这是怎么发生的/为什么发生的是另一天的讨论

我已经解决了磁盘空间问题,就一般交互而言,该站点似乎运行良好,但Drupal日志中充满了如下错误:

未捕获异常“PDOException”,消息为“SQLSTATE[HY000]:一般错误:3在/var/www/pixelsascher.com/public_html/includes/database/database.inc:2229中写入文件“/tmp/MYGWmIvU”(错误代码:28-设备上没有空间)

我现在的问题是:运行Drupal的mysql数据库在这一点上可能会损坏/损坏吗?也就是说,在0-10的范围内,将数据库恢复到磁盘空间耗尽之前的某一点有多重要

(除0之外的任何内容都意味着我可能会恢复数据库——但这里也有其他问题,这意味着如果我需要恢复,我们将丢失相当多的数据,这是一个巨大的阻力。这就是生活,等等)


我的假设是MySQL中的数据可能或多或少很好,但我不能依赖由许多数据库行集合组成的实际Drupal数据(用户、节点等)的完整性…

空间外崩溃可能会对数据库造成严重损害。您的数据库能够正常启动和运行的唯一事实已经很好地表明它并没有完全被事件搞砸

接下来,您可以使用以下工具执行深入扫描:

mysqlcheck客户端执行表维护:它检查、修复、优化或分析表

分析所有数据库中的所有表:

$ mysqlcheck -A
$ mysqlcheck -A -r
分析和修复所有数据库中的所有表:

$ mysqlcheck -A
$ mysqlcheck -A -r

注意:正如文档中所解释的,您最好在运行此操作之前关闭应用程序并进行备份。

我认为当前版本的数据库空间可能已满。尝试使用“是否最多可以存储多少数据”搜索数据库的版本。一种切实可行的方法是启动数据库并测试应用程序。你试过了吗?@GMB:我已经编辑了这个问题,让它更清楚。就表面互动而言,该网站似乎运行良好。我的问题是数据库是否可以保证正常(我的假设是,没有,但我想我会得到其他意见)。谢谢GMB,这非常有用。不过,我的假设是,即使我的数据库状态良好,我也不能信任我的应用程序数据,因为像用户和节点这样的对象是由多个db行组成的,因此一些对象可能只部分存在于数据库中(如果mysql在插入(比如说,20行中的10行)后磁盘空间不足)。你觉得这样对吗?@JordanMagnuson我理解你的怀疑,它们是相关的。它还可能取决于您在应用程序中管理数据库事务的方式:如果您仅在达到一致状态时提交,那么拥有“部分对象”的风险就不那么重要了。