IE盒子

搜索
查看: 93|回复: 0

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

[复制链接]

3

主题

5

帖子

11

积分

新手上路

Rank: 1

积分
11
发表于 2023-3-3 01:29:53 | 显示全部楼层 |阅读模式
一、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尝试数据恢复。
以上。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表