我有一个崩溃的大表,但是当我尝试在服务器上运行修复时,我遇到了磁盘空间不足的问题。我想将此表转储到本地机器进行修复,但 mysqldump 因表崩溃而抛出错误。是否可以转储此表以在本地进行修复?
答案1
这是 MyISAM 吗?InnoDB 吗?
如果是 MyISAM,您可以myisamcheck --safe-recover
按照文档所述尝试:
“这种恢复方法使用的磁盘空间也比 --recover 少得多。通常,您应该首先使用 --recover 进行修复,然后仅当 --recover 失败时才使用 --safe-recover。”
这里是参考。
答案2
这是一个老问题,但是为了其他来这里寻找答案的人的利益:
我们经常看到这样的问题,但大多数人都错过了一个非常明显的解决方案。如果您没有足够的驱动器空间来进行修复,可以通过将其他文件移出系统或甚至压缩不需要的目录来临时创建所需的空间。例如,所有这些手册页都占用大量空间,压缩效果非常好,或者您可以清理 /tmp 目录、存档日志等。在紧急情况下,您还可以从系统中转储和删除所有其他数据库(如果可行),然后再恢复它们。
清理空间可能比移动损坏的数据库文件更好,因为移动损坏的数据库文件甚至可能使问题进一步恶化。有时最好考虑里面盒子。
答案3
我通过将数据库复制到具有更多驱动器空间的本地机器并运行来解决了这个问题--recover
。