我们已经准备好了,你呢?

2024我们与您携手共赢,为您的企业形象保驾护航!

1、工作台损坏原因分析

以下是mysql表损坏的常见原因:

1、服务器突然断电,导致数据文件损坏。

2、强制关闭,不先关闭mysql服务。

3. 写表时进程被终止。

4、使用的同时,还要对桌子进行操作。

5.磁盘故障。

6、服务器崩溃。

7.mysql本身的Bug。

2、台面损坏的症状

表损坏的典型症状如下:

1.从表中选择数据时,出现以下错误:

表的密钥文件:“...”。尝试一下

2. 查询在表中找不到行或返回不完整的数据。

3. 错误:表'p'是as 和be。

4、打开表失败:Can't open file: '×××.MYI' (errno: 145)。

5.

3.防止MySQL表损坏

可以使用以下方法来防止mysql表损坏:

1、定期使用检查表(注意一定要关闭)。建议使用检查表来检查表(不关闭它)。

2、在做了大量更新或删除操作后,建议使用TABLE对表进行优化,这样不仅可以减少文件碎片,还可以降低表损坏的概率。

3、关闭服务器之前,先关闭服务器(正常关闭服务,不要使用kill -9杀死进程)。

4、使用UPS供电,避免突然停电。

5、使用mysql最新的稳定发布版本,减少mysql本身bug造成的表损坏。

6.对于引擎,可以使用nitor来检查表空间文件内文件空间管理的完整性。

7. 对磁盘进行 RAID,以减少磁盘错误并提高性能。

8、数据库服务器最好只运行其他必要的服务,不要运行其他业务服务。这将减少因崩溃而导致表损坏的可能性。

9、不怕万一,就怕意外。定期备份是防止表损坏的有效方法。

4. MySQL表损坏修复

可以使用以下步骤修复该表:

1.使用表或进行修理。

2、如果上述方法无效,请使用备份来恢复表。

具体可以参考以下方法:

第一阶段:检查你的桌子

如果您有很多时间,请运行 *.MYI 或 -e *.MYI 。使用 -s(静默)选项来抑制不必要的消息。

如果服务器关闭,则应使用 ---state 选项告诉表被标记为“已检查”。

您必须仅修复那些报告错误的表。对于此类表,请继续执行第 2 阶段。

如果在检查时出现奇怪的错误(例如 out of error),或者崩溃,请转到第 3 阶段。

第 2 阶段:简单且安全的修复

注意:如果你想更快地修复它,运行时,你应该将 和 变量的值设置为可用内存的大约 25%。

首先,尝试 -r -q (-r -q 表示“快速恢复模式”)。这将尝试修复索引文件而不触及数据文件。如果数据文件包含应有的所有内容以及指向数据文件中正确位置的删除链接,则此操作应该有效并且可以修复表。开始修复下一张桌子。否则,请执行以下过程:

在继续之前先备份您的数据文件。

使用 -r (-r 表示“恢复模式”)。这将从数据文件中删除不正确和已删除的记录并重建索引文件。

如果前面的步骤失败,请使用 --safe-。安全恢复模式使用较旧的恢复方法,可以处理常规恢复模式不起作用(但速度较慢)的少数情况。

如果在修复时出现奇怪的错误(例如,out of error),或者崩溃,请转到第 3 阶段。

第三阶段:困难修复

仅当索引文件的前 16K 块已损坏、包含不正确的信息或索引文件丢失时,才应进入此阶段。在这种情况下,需要创建一个新的索引文件。请按照下列步骤操作:

将数据文件移至安全位置。

使用表描述文件创建新的(空)数据文件和索引文件:

外壳> mysql

mysql>设置=1;

mysql> 表;

mysql> 退出

如果您的 MySQL 版本没有 TABLE,请使用 FROM。

将旧数据文件复制到新创建的数据文件中。 (不要只是将旧文件移回新文件;您需要保留一份副本,以防出现问题。)

回到阶段 2。现在 -r -q 应该可以工作了。 (这不应该是无限循环)。

您还可以使用 TABLE,它将自动执行整个程序。

第四阶段:非常困难的修复

仅当 .frm 描述文件也损坏时,您才应该到达此阶段。这种情况永远不应该发生,因为描述文件在创建表后永远不会改变。

从备份恢复配置文件,然后返回到第 3 阶段。您还可以恢复索引文件并返回到第 2 阶段。对于后者,您应该以 -r 开头。

如果您没有备份但确切知道该表是如何创建的,请在另一个数据库中创建该表的副本。删除新的数据文件并将描述文件和索引文件从另一个数据库移动到损坏的数据库。这提供了新的描述和索引文件,但保留了 .MYD 数据文件。返回阶段 2 并尝试重建索引文件。

可以使用以下方法修复该表:

如果数据库页损坏,您可能需要使用 INTO 从数据库中转储表;通常通过这种方式获得的大部分数据都是完整的。即使这样,损坏也可能导致 *FROM 或后台操作崩溃或断言,甚至导致前滚恢复崩溃。但是,您可以使用它来强制启动存储引擎,同时防止后台操作运行,以便您可以转储表。例如:您可以在重新启动服务器之前将以下行添加到选项文件的 [] 部分:

[]y = ry 允许的非零值如下。较大的数字涵盖了较小数字的所有预防措施。如果您可以使用大多为 4 的选项值转储表,那么您就相对安全,并且只有损坏的各个页面上的一些数据会丢失。值 6 更为夸张,因为数据库页处于陈旧状态,这反过来会对 B 树和其他数据库结构造成更多损坏。

1(破裂)

即使服务器检测到损坏的页面,也让服务器保持运行;尝试让 *FROM 跳过损坏的索引记录和页面以帮助转储表。

2(未完成)

防止主线程运行,这将防止在清理操作期间发生崩溃。

3(奥)

恢复后不运行事务回滚。

4(RGE)

还可以防止插入缓冲区合并操作。如果你能引起车祸的话。最好不要做这些操作,也不要计算表统计数据。

5 ()

启动数据库而不查看未完成的日志:将未完成的事务视为已提交。

6(O)

不要在恢复连接上执行日志前滚。

否则,数据库不能与任何允许的选项一起使用。作为一项安全措施,当 y 设置为大于 0 的值时,将阻止用户执行 或 操作。

即使使用强制恢复,也可以DROP或者表。如果您知道给定的表导致回滚崩溃,则可以将其删除。您还可以使用它来阻止由于批量导入失败或 ALTER TABLE 失败而导致的失控回滚。可以kill掉这个进程,然后将y设置为3,这样数据库就挂起而不需要回滚,然后丢弃导致失控回滚的表。

二维码
扫一扫在手机端查看

本文链接:https://by928.com/7847.html     转载请注明出处和本文链接!请遵守 《网站协议》
我们凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为4000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设、网站改版、域名注册、主机空间、手机网站建设、网站备案等方面的需求,请立即点击咨询我们或拨打咨询热线: 13761152229,我们会详细为你一一解答你心中的疑难。

项目经理在线

我们已经准备好了,你呢?

2020我们与您携手共赢,为您的企业形象保驾护航!

在线客服
联系方式

热线电话

13761152229

上班时间

周一到周五

公司电话

二维码
微信
线