[MySQL FAQ]系列 -- 快速还原MyISAM表索引

假设有个myisam表:tbl,为了备份方便,直接把 frmMYD 文件拷贝到其他目录。在还原时,就需要重新下创建索引,只需要执行以下命令:

mysql> REPAIR TABLE `tbl` USE_FRM;

 
即可根据 frmMYD 文件,产生一个新的 MYI 索引文件。这在索引文件较大时备份还原比较有用。
另外,mysql 5.1起开始支持 分区(partition),但是如果表的某个子分区索引坏了,用 REPAIR TABLE 却无法修复,咋办呢?
其实很简单,利用 myisamchk 工具就可以修复了,例如:

path/myisamchk -rq tbl#P#P2
- check record delete-chain
- recovering (with keycache) MyISAM-table 'tbl#P#p2'
Data records: 3

 
很简单吧 :)

技术相关: