返回博客

修复 MySQL 中损坏表的快速解决方案:教程

修复 MySQL 中损坏表的快速解决方案:教程

MySQL 是最流行的开源 RDBMS(关系型数据库管理系统)之一。它是快速增长的 LAMP Stack 的重要组成部分,并在开发人员和系统管理员中赢得了极高的人气。与 非关系型数据库 相比,SQL 提供了出色的功能来有效地整理、存储和管理数据。SQL 数据库独特的表排列功能和杰出的能力使其成为各种规模(无论大小)组织的首选。

MySQL 表在极少数情况下可能会损坏,这表明发生了此类错误,并且其中存储的数据无法读取。当您尝试从损坏的表中读取数据时,服务器会崩溃并抛出错误或错误列表。

MySQL 表损坏的潜在原因

以下是导致表损坏的一些最典型原因:

  • 重启后 MySQL 服务崩溃。
  • 由于断电,机器意外关机。
  • 内存损坏或硬件故障。
  • 软件漏洞,存在于 操作系统 或 SQL 代码中。
  • MySQL 在写入时关闭。
  • 系统在更新 SQL 时转为 关闭 状态。

在修复您怀疑已损坏的表之前,请创建信息目录的备份。这将有助于降低数据丢失的可能性。在这篇快速指南中,我们将引导您完成在 MySQL 中修复损坏表的故障排除步骤。

前提条件

要学习本教程,您需要满足以下条件:

步骤 1:停止 MySQL 服务并备份数据

首先,使用 systemctl 命令停止 MySQL 服务:

停止 SQL 服务后,下一步是将所有现有文件备份到一个新目录中。使用 Ubuntu 的默认数据目录 /var/lib/mysql/ 来复制所有系统数据:

步骤 2:识别错误

接下来,我们将开始调查并识别损坏的表。如果该表使用的是 MyISAM 存储引擎,请使用 CHECK TABLE 语句并验证表的状态:

您将看到一条输出消息,确认损坏的一个或多个表。

步骤 3:修复损坏的表

如果 MyISAM 表上存在错误且您已识别出该错误,请使用 REPAIR TABLE 语句来修复错误:

如果修复成功,您应该会看到以下无错误的消息作为输出:

但是,如果您发现错误再次出现,请按照 MySQL 8.0 版本官方文档 来重建或修复表。

MyISAM 存储引擎 不同,在 InnoDB 存储引擎 中,修复表所涉及的 InnoDB 过程有所不同。InnoDB 是 MySQL 8.0 中的默认存储引擎。它具有自动损坏检查和修复操作。 MySQL InnoDB 通过对读取的每个页面执行校验和来检查损坏的页面。如果检测到不一致,它将自动停止 MySQL 服务器。

归根结底,极少需要修复 InnoDB 表。InnoDB 具有崩溃恢复机制,可以通过重启解决大多数问题。

尝试重启 MySQL 服务,看看是否可以访问服务器:

如果在重启后仍无法重建损坏的 InnoDB 表,请尝试 MySQL 文档中建议的“转储和重新加载”方法。该方法涉及使用 mysqldump 工具重新获得对损坏表的访问权限。必须创建一个文件夹来存储和保留该表的 逻辑备份。一旦错误得到修复,它就会将表重新加载回数据库中。

步骤 4:利用 innodb_force_recovery 选项

如果服务器仍然崩溃或无法访问,请尝试使用 InnoDB 中的 force_recovery 选项。开启 ON 模式的 force_recovery 选项是恢复 MySQL 数据库的绝佳方法。您可以通过在 mysqld.cnf 文件中修改此选项,使用 nano 文本编辑器:

[mysqld] 部分下插入以下行:

innodb force recovery

在重启 MySQL 服务后保存并关闭文件。

步骤 5:创建 mysqldump 文件

如果您能够访问损坏的表,请使用 mysqldump 选项将所有转储放入新文件中。根据您的喜好为新文件命名,并确保在末尾添加 .sql 扩展名。这里我们将文件命名为 demo.sql:

之后,使用 DROP TABLE 查询从数据库中删除该表。您可以使用以下语法,以避免需要重新打开 MySQL 提示符:

然后,使用您刚刚准备的转储文档 demo.sql 恢复表:

您已成功修复了 MySQL 损坏的表,并准备好无缝使用数据库。

结论

如果您处理大量数据,则可能会发生表损坏或意外系统崩溃。值得一提的是,MySQL InnoDB 存储引擎比以前的 MyISAM 引擎更具容错性。使用 InnoDB 存储引擎的表仍然可能会损坏,尽管得益于其 自动恢复功能.

,表损坏和崩溃的风险已显著降低。最后,您可以在我们的 博客:

祝您使用愉快!

author

Akshay Nagpal

作者 · CloudSigma

Preslav Dobrev 是 CloudSigma 的创意设计师,专注于通过传统和创新营销渠道打造一致的企业形象。他擅长将艺术愿景与战略营销相融合,创造具有影响力的品牌叙事。

评论

暂无评论。发表第一条评论吧。