暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

MySQL表损坏的修复方式有哪些?

原创 凡尘dba 2022-12-26
1363

一、MyISAM表损坏的修复方式

1、使用 myisamchk 来修复,具体步骤:

(1)修复前将mysql服务停止。

(2)打开命令行方式,然后进入到mysql的/bin目录。

(3)执行myisamchk –recover 数据库所在路径/*.MYI。

2、使用 REPAIR TABLE 或者 OPTIMIZE table命令来修复,REPAIR TABLE table_name 修复表,OPTIMIZE TABLE table_name 优化表。

REPAIR TABLE 用于修复被破坏的表,OPTIMIZE TABLE 用于回收闲置的数据库空间,当表上的数据行被删除时,所占据的磁盘空间并没有立即被回收,使用了OPTIMIZE TABLE命令后这些空间将被回收,并且对磁盘上的数据行进行重排(注意:是磁盘上,而非数据库)。


二、innodb表损坏的修复方式

MySQL错误日志出现:[Note] InnoDB: Discarding tablespace of table db.table: Data structure corruption,有哪些产生可能的原因及解决办法呢?

1、产生原因

从错误日志即可判断出表空间ibd文件发生了物理损坏,那么其中的可能包括如下:

(1)数据库服务器异常宕机/断电等。

(2)kill -9强制关闭mysqld。

(3)表空间导出导入过程中发生的ibd文件损坏。

(4)人为损坏ibd文件。

(5)底层物理I/O设备损坏,导致文件损坏。

2、解决办法

(1)从其他实例(如slave)上进行表空间传输进行导入或进行SQL导出导入。

(2)从历史备份中进行全量+增量恢复完整的ibd文件后再进行表空间传输或进行SQL导出导入。

(3)尝试innodb force recovery从1-6逐一尝试启动数据库,启动后通过mysqldump重新将表导出导入。

(4)考虑使用工具undrop-for-innodb从index page尝试数据恢复。



全文完,希望可以帮到正在阅读的你,如果觉得有帮助,可以分享给你身边的朋友,同事,你关心谁就分享给谁,一起学习共同进步~~~

❤ 欢迎关注我的公众号【凡尘读书楼】,一起学习新知识!
————————————————————————————
公众号:凡尘读书楼
墨天轮:https://www.modb.pro/u/399450
知识星球 :凡尘dba人生有限公司
————————————————————————————

最后修改时间:2024-07-07 19:11:16
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论