我有一个千兆字节的MySQL MyISAM表,现在每天晚上在导出备份时,进入“使用keycache修复”几个小时。
这只是在我将MySQL从4.1升级到5.1之后才开始的(我是从4.1到5.0逐步完成的)。责备5.1似乎很奇怪,但它是服务器上唯一的变化。
此服务器上还有很多其他表没有这个问题,但是没有一个表只有一半。
我尝试用“create table like”和“insert into blah select * from”来克隆/替换表,但这没有改变。这和出口/进口一样好,对吗?
我甚至完全放弃了全文索引,试图阻止这种行为(或者至少加速修复)但没有成功。
还尝试使用myisamchk进行手动修复,没有改变行为。
真正奇怪的是这是一个低活动数据库,每小时写入和读取次数不多。
任何人都可以让我深入了解为什么会发生这种情况以及我可能会调试哪些更多信息?
添加这些链接以进行更多研究:
How To Avoid Repair With Keycache?
How can I avoid "repair with keycache" in MySQL?
看起来我需要检查 myisam_max_sort_file_size
然而,这并没有回答我原来的问题,即为什么每天晚上都需要修理。
答案 0 :(得分:1)
尝试运行CHECK TABLE mytable FOR UPGRADE
http://dev.mysql.com/doc/refman/5.1/en/check-table.html
如果您遇到问题,请执行REPAIR TABLE mytable USE_FRM EXTENDED
http://dev.mysql.com/doc/refman/5.1/en/repair-table.html
另外,你可以运行它(在shell中,在mysql之外)
myisamchk --force --recover --key_buffer_size=512M --sort_buffer_size=64M --read_buffer_size=8M --write_buffer_size=8M /path/to/datadir/*/*.MYI
(您需要指定MYI的路径 - 索引文件)