适用于:
MySQL 服务器-版本4.0及以上
本文信息适用于所有平台。
目标
学习MySQL的myisamrecoveroptions选项并如何将它用于启动服务器时崩溃的MyISAM表的自动修复。
myisam‐recover‐options 在MySQL 5.1及更早版本中叫做mysqlrecover。
修复
myisam‐recover‐options选项是用于创建启动MySQL时MyISAM 的自动恢复。myisam‐recover‐options选项能使用以下值:
- DEFAULT: 不用备份,强制,或快速检查进行恢复。
- BACKUP: 如果数据文件在恢复时被更改,将MYD 文件的备份保存为 tbl_name‐datetime.BAK。
- FORCE: 即使会从.MYD 文件丢失多于一行仍运行恢复。
- QUICK: 如果没有任何delete块就不检查行。
myisam‐recover‐options 也允许值的组合,例如果数据文件在恢复时被更改,即使创建备份时丢失了多于一行,FORCE,BACKUP 结合恢复的使用。
myisam‐recover‐options的QUICK和DEFAULT值是两个最安全的选项,因为它们不删除任何数据。这也使得它们对于自动恢复是很适合的值。DEFAULT和FORCE的差异是即使FORCE不能从之前完成的语句中找到所有行,它仍被允许继续恢复。因此,建议将FORCE与BACKUP结合,使得在对MyISAM数据文件作更改之前创建一个备份。
所以在myisam‐recover‐options 选项使用DEFAULT 是个好方法,但如果失败的话,如果错误经常出现且可以接受潜在丢失数据的风险,建议手动修复并仅使用myisamrecover=FORCE,BACKUP。
你应该在执行手动修复之前创建表的备份。
如果你需要自动修复表而不重启MySQL ,你需要使用调度服务启 myisamchk, CHECK TABLE,且/或REPAIR TABLE 来定期检查并修复表的错误。MySQL 5.1及以上你能使用EVENTs;在MySQL
5.0及以下,你需要使用操作系统提供的scheduler。
如果你选择使用myisamchk,你必须确保在运行myisamchk时没有其他程序在使用表。
参见:
MyISAM Startup Options
Setting Up a MyISAM Table Maintenance Schedule
How to Repair MyISAM Tables
What is a MySQL Event and How is it Created?
参考
NOTE:1023216.1 How can I speed up bulk loading or repairing of MyISAM tables?
NOTE:1023264.1 What can Cause Corrupted MyISAM Tables in MySQL Server?
NOTE:1023408.1 Error: 1034 Incorrect key file for table ‘%s’; try to repair it Or ERROR 126
(HY000): Incorrect key file for table ‘%s’; try to repair it From MySQL Server
NOTE:1023752.1 Error: 1195 Table ‘%s’ is marked as crashed and last (automatic?) repair failed.
NOTE:1023780.1 Error: 1035 Old key file for table ‘%s’; repair it!
NOTE:1024132.1 What is a MySQL Event and How is it Created?
Didn’t find what you are looking for?
Comment