今天遇到一个问题 mysql-5.5
数据库保障
部分错误日志如下
InnoDB: stored checksum 808812544, prior-to-4.0.14-form stored checksum 959328563
InnoDB: Page lsn 791621944 858666297, low 4 bytes of lsn at page end 841888053
InnoDB: Page number (if stored to page already) 307162691,
InnoDB: space id (if created with >= MySQL-4.1.1 and stored already) 841958736
InnoDB: Database page corruption on disk or a failed
InnoDB: file read of page 44864.
InnoDB: You may have to recover from a backup.
InnoDB: It is also possible that your operating
InnoDB: system has corrupted its own file cache
InnoDB: and rebooting your computer removes the
InnoDB: error.
130826 9:59:12 [ERROR] Invalid (old?) table or database name 'zs20121215-21'
检测数据库时候发生下面错误
mysql> check table activity.enterGiveApp;
ERROR 2013 (HY000): Lost connection to MySQL server during query
表结构存在
mysql> desc activity.goldidea;
+-------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+--------------+------+-----+---------+----------------+
| id | int(10) | NO | PRI | NULL | auto_increment |
| userId | varchar(50) | YES | | NULL | |
| localIp | varchar(100) | YES | | NULL | |
| create_time | datetime | YES | | NULL | |
+-------------+--------------+------+-----+---------+----------------+
4 rows in set (0.06 sec)
查询数据发生下面错误
mysql> select ID from activity.goldidea where ID < 50;
ERROR 2013 (HY000): Lost connection to MySQL server during query
非 MyISAM 表,不支持 repair 修复
mysql> repair table activity.goldidea;
+-----------------------+--------+----------+---------------------------------------------------------+
| Table | Op | Msg_type | Msg_text |
+-----------------------+--------+----------+---------------------------------------------------------+
| activity.funitv_click | repair | note | The storage engine for the table doesn't support repair |
+-----------------------+--------+----------+---------------------------------------------------------+
1 row in set (0.01 sec)
查询存储
mysql> select engine from information_schema.tables where table_schema='activity' and table_name=goldidea';
+--------+
| engine |
+--------+
| InnoDB |
+--------+
1 row in set (0.00 sec)
尝试修复
my.cnf 启动参数添加
innodb_force_recovery = 6
重启 mysql
检测表
mysql> check table activity.goldidea;
ERROR 2013 (HY000): Lost connection to MySQL server during query
mysql> desc activity.goldidea;
+-------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+--------------+------+-----+---------+----------------+
| id | int(10) | NO | PRI | NULL | auto_increment |
| userId | varchar(50) | YES | | NULL | |
| localIp | varchar(100) | YES | | NULL | |
| create_time | datetime | YES | | NULL | |
+-------------+--------------+------+-----+---------+----------------+
4 rows in set (0.06 sec)
mysql> select count(*) from activity.goldidea;
+----------+
| count(*) |
+----------+
| 60827 |
+----------+
1 row in set (0.13 sec)
mysql> check table activity.goldidea;
+-------------------+-------+----------+----------+
| Table | Op | Msg_type | Msg_text |
+-------------------+-------+----------+----------+
| activity.goldidea | check | status | OK |
+-------------------+-------+----------+----------+
1 row in set (0.22 sec)
走运地修复好表及数据了