场景说明:
这个MySQL表损坏的场景是发生在2018年线上库的某个月
当时MySQL的版本是MySQL5.6。
硬件:服务器的硬件配置是PowerEdge R320 Intel(R) Xeon(R) CPU E5-2403 v2 @ 1.80GHz * 4 4核心 8G内存,机械硬盘mysql
dr_stats表 因为服务器意外宕机这个表损坏了。
此时正好这个dr_stats表的引擎为myIsam。
这个表里面是13362万记录数,这个表是myIsam的数据存储引擎,因此即便是表损坏了,mysql的服务仍是能够正常启动和登陆mysql服务的,可是此时这个dr_stats表已经不能写入数据了
在线修复这个表MyIsam的引擎的表 check table dr_stats 执行了24分钟,repair table dr_stats 执行了30分钟sql
mysql> use drsj; Database changed mysql> check table dr_stats; +---------------+-------+----------+---------------------------------------------------------+ | Table | Op | Msg_type | Msg_text | +---------------+-------+----------+---------------------------------------------------------+ | drsj.dr_stats | check | warning | Table is marked as crashed | | drsj.dr_stats | check | warning | 1 client is using or hasn't closed the table properly | | drsj.dr_stats | check | error | Checksum for key: 3 doesn't match checksum for records | | drsj.dr_stats | check | error | Corrupt | +---------------+-------+----------+---------------------------------------------------------+ 4 rows in set (24 min 57.36 sec) mysql>
mysql> mysql> repair table dr_stats; +---------------+--------+----------+----------+ | Table | Op | Msg_type | Msg_text | +---------------+--------+----------+----------+ | drsj.dr_stats | repair | status | OK | +---------------+--------+----------+----------+ 1 row in set (30 min 6.36 sec) mysql>
到此时,这个表完成了修复,能够正常写入数据了。服务器