运行 磁盘不足 space:我的实时应用程序 mysql 数据库会损坏吗?

Ran out of disk space: will my live application mysql database be corrupted?

我有一个大型 Drupal 7 站点,有许多并发登录用户 运行 在磁盘 space 最近 运行 出来的服务器上(MySQL InnoDB 在 Memcached 后面在 Ubuntu 16.04 上)。 How/why 这件事改天再讨论。

我已经解决了磁盘 space 问题,就一般交互而言,站点似乎 运行 没问题,但是 Drupal 日志充满了这样的错误:

Uncaught exception 'PDOException' with message 'SQLSTATE[HY000]: General error: 3 Error writing file '/tmp/MYGWmIvU' (Errcode: 28 - No space left on device)' in /var/www/pixelscrapper.com/public_html/includes/database/database.inc:2229

我现在的问题是:运行 Drupal 的 mysql 数据库此时可能是 corrupted/flaky 吗? 即在0-10 的比例,我将数据库恢复到磁盘 space 运行 之前的某个点有多重要?

(除 0 以外的任何值都意味着我可能会恢复数据库——但这里还有其他问题,这意味着如果我需要恢复,我们将丢失好几天的数据,这是一个巨大的拖累。C'est la vie 等)。

我的假设是 MySQL 中的数据可能或多或少没问题,但我不能依赖由以下各项组成的实际 Drupal 数据(用户、节点等)的完整性许多数据库行的集合...

space 次崩溃会对数据库造成严重损坏。您的数据库能够像往常一样启动和 运行 的唯一事实已经很好地表明它并没有完全被事件搞砸。

接下来您可以使用 the sqlcheck program 执行深度扫描:

The mysqlcheck client performs table maintenance: It checks, repairs, optimizes, or analyzes tables.

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

$ mysqlcheck -A

分析并修复所有数据库中的所有表:

$ mysqlcheck -A -r

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