報錯: Error 'Incorrect key file for table './somedb/sometable.MYI'; try to repair it' on query. Default database: 'somedb'. Query: 'delete FROM somedb.sometable where unix_timestamp(now()) - unix_timestamp(eventTime)>60*60*24*@a'
恢復:修復表
根據報錯,出錯的表是sometable
(1) stop slave
mysql> stop slave;
Query OK, 0 rows affected (0.01 sec)
(2) 檢查表sometable
mysql> check table sometable;
+------------------+-------+----------+----------------------------------------------------------+
| Table | Op | Msg_type | Msg_text |
+------------------+-------+----------+----------------------------------------------------------+
| somedb.sometable | check | warning | Table is marked as crashed |
| somedb.sometable | check | warning | 2 clients are using or haven't closed the table properly |
| somedb.sometable | check | error | Found 2487557 keys of 2487558 |
| somedb.sometable | check | error | Corrupt |
+------------------+-------+----------+----------------------------------------------------------+
4 rows in set (3.48 sec)
(3) 修復表sometable
mysql> repair table sometable;
+------------------+--------+----------+------------------------------------------------+
| Table | Op | Msg_type | Msg_text |
+------------------+--------+----------+------------------------------------------------+
| somedb.sometable | repair | warning | Number of rows changed from 2487558 to 2487434 |
| somedb.sometable | repair | status | OK |
+------------------+--------+----------+------------------------------------------------+
2 rows in set (44.75 sec)
再次檢查sometable
mysql> check table sometable;
+------------------+-------+----------+----------+
| Table | Op | Msg_type | Msg_text |
+------------------+-------+----------+----------+
| somedb.sometable | check | status | OK |
+------------------+-------+----------+----------+
1 row in set (5.86 sec)
(4) start slave
mysql> start slave;
Query OK, 0 rows affected (0.01 sec)
查看數據庫狀態,恢復正常。