Email: service@parnassusdata.com 7 x 24 online support!
Oracle Mysqld: Incorrect Key File For Table ‘./mysql/ndb_binlog_index.myi’; 尝试恢复
适用于:
MySQL集群版本6.3及以上
本文信息适用于所有平台。
症状
在特定情况下,系统表ndb_binlog_index可能被损坏。
当尝试执行以下查询时,这个损坏最常见的症状是ERROR 1194:
query:
mysql> SELECT * from ndb_binlog_index;
ERROR 1194 (HY000): Table ‘ndb_binlog_ index’ is marked as crashed and should be repaired
表损坏也能从MySQL错误日志中被证实:
[…]
Faile d to flush master info file
Slave I/O thread exiting, read u p to log ‘log‐bin.NNNNNN’, position MMMMMMMMM
Error reading relay log event: slave SQL thread was killed
Error writing file ‘path‐to‐binlog/log‐bin’ (errno: 30)
mysqld: Incorrect key file for table ‘./mysql/ndb_binlo g_index.MYI’; try to repair it
NDB Binlog: Writing row (A,B,C) to ndb_binlog_index: N
[…]
原因
磁盘故障是这种情况最可能的原因。
实际上,损坏可能就在磁盘故障后发生,示例如下:
kernel: sd 0:0:0:0: SCSI error: return code = 0x06000000
kernel: end_request: I/O error, dev sda, sector 112313
kernel: Buffer I/O error on device sda1, logical block 14039
kernel: lost page write due to I/O error on sda1
kernel: Aborting journal on device sda1.
kernel: journal commit I/O error
kernel: journal commit I/O error
kernel: journal commit I/O error
kernel: journal commit I/O error
kernel: ext3_abort called.
kernel: EXT3‐fs error (dev ice sda1): ext3_journal_start_sb: Detected aborted journal
kernel: Remounting filesystem read‐only
logrotd: Rotating log /var/log/ldapfe
mysqld: Failed to flush master info f ile
mysqld: Slave I/O thread exiting, read u p to log ‘log‐bin.000007’, position 59561189
mysqld: Error reading relay log event: slave SQL thread was killed
解决方案
建议的方法是使用以下命令:
REPAIR TABLE ndb_binlog_index table;
参考