MySQL 表修复
**针对MyISAM**
1. `REPAIR TABLE xxx QUICK`
`` 一般来说 REPAIR TABLE xxx(表名) 就可以了,如果不行,加QUICK
2. 新建一个表,表结构跟需要修复的表一样(不要建索引),假设新建的表明名A, 需要修复的表名b
2.1 停止mysql服务
2.2 重命名表文件(.frm文件,文件的路径在mysql 的data目录/数据库目录下),删除原来表B的B.frm文件,重名了A.frm 为b.frm, 删除A的其他文件
2.3 启动mysql, 建立索引(如果有需要的话)
**针对INNODB**
1. `REPAIR TABLE xxx QUICK` (少部分情况有效)
2. ```
mysqldump db_name table_name > dump.sql 先导出
mysql db_name < dump.sql 在导入
ALTER TABLE t1 ENGINE = InnoDB; 更改下引擎
mysqlcheck --repair --databases db_name (如果上面不行,直接执行这一步)
```
3. 基于binlog 恢复
3.1 找到对应的binlog文件 show binlog events;
3.2 导出binlog文件内容(binlog文件是二进制的)
```
mysqlbinlog xxx_binlog.000001 > c:\\test1.sql
source c:\\test1.sql 导入到mysql中
```
快速修复表repair table ims_core_chache 语句 table 是关键词
网友评论