MySQL Error number: MY-012803; Symbol: ER_IB_MSG_978; SQLSTATE: HY000 报错 故障修复 远程处理
文档解释
Error number: MY-012803; Symbol: ER_IB_MSG_978; SQLSTATE: HY000
Message: %s
错误ER_IB_MSG_978的全称为ER_INDEX_CORRUPT,是MySQL的一类错误,提示用户InnoDB索引被损坏了,MySQL会返回一个HY000的SQLSTATE码,表明该错误来自InnoDB。
错误ER_IB_MSG_978一般由以下三种情况引起:
1.软件数据库出现错误:当数据库在不正常的情况下崩溃,如系统死机、断电等,导致数据库被意外终止,索引就会受到破坏;
2.硬件故障:如磁盘文件错误,文件系统崩溃等情况,可能会破坏InnoDB的索引文件;
3.InnoDB系统错误:如InnoDB的检查点错误,主备差异,以及InnoDB系统中出现的各种bug。
一般处理方法及步骤
1.更改表空间文件:
对于软件错误、硬件故障和InnoDB系统错误等情况,应首先下载最新的MySQL安装包,其次从上次正常备份中恢复表空间文件到最新的MySQL安装包中,最后重新启动MySQL,让其完成检测和表空间更新。
2.修复InnoDB索引:
下载安装Percona Toolkit(PT),使用PT的pt-table-checksum对表进行校验,检查表的一致性;使用pt-online-schema-change程序更新表,做表的优化,按照要求处理问题。