有时我们的表中的某些索引被破坏,数据库开始消耗100%的CPU负载,并在一段时间内完全卡住。即使简单的查询也无法完成,重新启动也无济于事。InnoDB:破坏和修复索引
我发现的是要么逐个删除并重新创建索引(这可能需要很长的时间和很多调查),或者只是在可疑表上调用alter table mytable engine=innodb;
。这实际上很好,它修复了一切,一切恢复正常。但我不知道背景中究竟发生了什么,以及它为什么会有所帮助。另外 - 它会帮助每月手动进行一次吗?自动化这是一个好主意吗?有没有办法做一些数据库健康检查?
您是否正在运行最新版本的MySQL?你有没有试过一个完整的转储,从零开始恢复你的数据库?你能在任何其他机器上重现问题吗?你可能正在处理有问题的软件或有缺陷的硬件,例如一大堆内存。 – tadman
是的,这大概发生一年,最后一次发生在不同的机器上。我正在Debian上运行最新的Percona。 –
值得尝试一下MariaDB和MySQL,看看它是否是问题和/或联系Percona支持。 – tadman