mysql/Innodb 崩溃和重启的主要原因

Major causes of mysql/Innodb crash and restart

在最近一次数据库崩溃之后,我们的供应商没有提供 RCA。我想扩展我的知识,了解哪些事情会导致数据库崩溃。

在我们的特定案例中,日志显示崩溃前的记录索引不匹配。我们认为这是由于将 .frm 和 .idb 文件复制到另一个数据库而不是使用 mysqldump。在崩溃前大约一周,有关于此的警告记录,从它们被复制时开始。但是数据库真的需要这么长时间才会崩溃吗?

根据我的经验,大多数崩溃都是由于硬件错误造成的,即您的磁盘出现故障。第二个最常见的是用户错误,比如像移动普通文件一样移动 InnoDB 表空间(你已经知道,不要那样做)。第三是MySQL中的错误,因为所有软件都有错误。

在用户 activity 访问导致崩溃的代码路径之前肯定有可能花费不确定的时间。不能从中得出任何结论。

最终,您必须创建冗余以防止崩溃。这对于数据库尤其重要。冗余示例:

  • 使用 RAID 1 或 RAID 10 做磁盘镜像
  • 使用复制将数据复制到另一个 MySQL 实例连续
  • 在另一台物理计算机上托管另一个 MySQL 实例,最好是在数据中心的单独机架上
  • 您甚至可能在该国家/地区的另一个地区拥有另一个副本