I've heard that MyISAM tables can become corrupt, what sort of actions are most likely to corrupt them and how can you safely fix said corruptions.
The MySQL documentation is quite explicit about that: http://dev.mysql.com/doc/refman/5.1/en/corrupted-myisam-tables.html
I have a production server and in case of cold resets(e.g. power failures) all MyISAM tables that were in an update process get corrupted. mysqlcheck solves the problem. I recommend putting mysqlcheck with the --auto-repair option in a cron, to fix the rare cases of corruption that happen at runtime.
I got MyISAM corruption sometimes. On my server problem is very heavy load that can overwhelm MySQL causing it to hang. That what happens in real world ;)
Another problem with MyISAM (although not really database corruption in the strict sense) is that it does not properly support transactions (commit - rollback).
This could also potentially lead to data integrity problems sooner or later (depending on the quality of the implementation of your database layer).
In my opinion this makes the 'fast' MyISAM backend in MySQL only an option for really simple or really small databases ...
To my knowledge, I see that power failure or sudden failure in syncing leads to corruption of Myisam data.
Switching to innodb would be the best choice here.
来源:https://stackoverflow.com/questions/739958/what-causes-myisam-to-become-corrupt