Error 'Incorrect key file for table 'test'

来源:互联网 发布:js 时间轴控件 编辑:程序博客网 时间:2024/05/13 11:09

1.版本

1)操作系统

 cat /etc/issue
Red Hat Enterprise Linux Server release 5.5 (Tikanga)
Kernel \r on an \m

 cat /proc/version
Linux version 2.6.32-504.el6.x86_64 (mockbuild@c6b9.bsys.dev.centos.org) (gcc version 4.4.7 20120313 (Red Hat 4.4.7-11) (GCC) ) #1 SMP Wed Oct 15 04:27:16 UTC 2014

2)mysql数据库版本

mysql --version
mysql  Ver 14.14 Distrib 5.6.26, for linux-glibc2.5 (x86_64) using  EditLine wrapper


2.问题描述

2.1 发现问题

  今天发现测试环境的mysql从库报如下错误

Last_Error: Error 'Incorrect key file for table 'test'; try to repair it' on query. Default database: 'test2'. Query: 'alter table test add index ind_test_data1(data1)'

2.2问题分析

2.2.1 查看表结构

show create table test;+-------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+| Table | Create Table                                                                                                                                                                                           |+-------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+| test  | CREATE TABLE `test` (  `id` int(11) NOT NULL,  `int_k` int(11) NOT NULL,  `data1` varchar(255) NOT NULL,  `data2` varchar(255) NOT NULL,  PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8 |+-------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
##我们可以看到这是一张innodb表,id列为主键。

2.2.2 查看报错内容

  从2.1的报错中我们可以看到,从库是在执行alter table test add index ind_test_data1(data1)时报的错,一个简单的添加索引命令会报错呢?,查看了从库的error log,发现有如下报错:

016-02-05 14:08:20 17073 [Warning] Disk is full writing './3306-relay-bin.000003' (Errcode: 28 - No space left on device). Waiting for someone to free space...2016-02-05 14:08:20 17073 [Warning] Retry in 60 secs. Message reprinted in 600 secs
  至此问题就清楚了,是因为从库的磁盘空间不够,所以在执行alter table的时候报错。(查了一下test是一个将近1000万记录的大表)


3.解决方案

  给data目录添加空间后在从库执行 stop slave; 然后再执行start slave; 问题解决。

  



0 0