魔方网表 让信息化更简单

 找回密码
 注册

手机号码,快捷登录

手机号码,快捷登录

查看: 3886|回复: 0

MYISAM索引文件损坏的修复方法

[复制链接]
laiye 发表于 2008-7-14 11:10:00 | 显示全部楼层 |阅读模式
使用MYISAM存储引擎,当创建一个表时,会出现三个文件:数据文件MYD,索引文件MYI,格式文件frm。当索引文件损坏时或者丢失时,可以用如下的方法进行修复。下面是实验过程。
  [mysql@testapp74 notify]$ mv message_ignore.MYI message_ignore.MYI.bak
  [mysql@testapp74 notify]$
  [mysql@testapp74 notify]$ mysqld_safe &
  [1] 26267
  [mysql@testapp74 notify]$ 080630 14:19:03 mysqld_safe Logging to '/usr/mysql_data/log/alert.log'.
  080630 14:19:03 mysqld_safe Starting mysqld daemon with databases from /usr/mysql_data/data
  [mysql@testapp74 notify]$
  [mysql@testapp74 notify]$
  [mysql@testapp74 notify]$
  [mysql@testapp74 notify]$ vi /usr/mysql_data/log/alert.log
  080630 14:18:14 [Note] /usr/sbin/mysqld: Normal shutdown
  080630 14:18:14 [Note] Event Scheduler: Purging the queue. 0 events
  080630 14:18:16 InnoDB: Starting shutdown...
  080630 14:18:19 InnoDB: Shutdown completed; log sequence number 162 783173592
  080630 14:18:19 [Note] /usr/sbin/mysqld: Shutdown complete
  080630 14:18:19 mysqld_safe mysqld from pid file /usr/mysql_data/data/testapp74.pid ended
  080630 14:19:03 mysqld_safe Starting mysqld daemon with databases from /usr/mysql_data/data
  080630 14:19:03 InnoDB: Started; log sequence number 162 783173592
  080630 14:19:03 [Note] Event Scheduler: Loaded 0 events
  080630 14:19:03 [Note] /usr/sbin/mysqld: ready for connections.
  Version: '5.1.23-rc-community' socket: '/tmp/mysql.sock' port: 3306 MySQL Community Edition (GPL)
  从上面可以看出,当一个表出现问题,mysql的警告日志并没有任何的错误出现。
  [mysql@testapp74 notify]$ mysql -uroot
  Welcome to the MySQL monitor. Commands end with ; or \g.
  Your MySQL connection id is 4
  Server version: 5.1.23-rc-community MySQL Community Edition (GPL)
  Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
  mysql> use notify
  Reading table information for completion of table and column names
  You can turn off this feature to get a quicker startup with -A
  Database changed
  mysql>
  mysql>
  mysql>
  mysql>
  mysql> select * from message_ignore limit 1; --当查询表时,会报错
  ERROR 1017 (HY000): Can't find file: 'message_ignore' (errno: 2)
  mysql> check table message_ignore;
  +-----------------------+-------+----------+----------------------------------------------+
  | Table | Op | Msg_type | Msg_text |
  +-----------------------+-------+----------+----------------------------------------------+
  | notify.message_ignore | check | Error | Can't find file: 'message_ignore' (errno: 2) |
  | notify.message_ignore | check | error | Corrupt |
  +-----------------------+-------+----------+----------------------------------------------+
  2 rows in set (0.03 sec)
  mysql>
  mysql> repair table message_ignore;
  +-----------------------+--------+----------+----------------------------------------------+
  | Table | Op | Msg_type | Msg_text |
  +-----------------------+--------+----------+----------------------------------------------+
  | notify.message_ignore | repair | Error | Can't find file: 'message_ignore' (errno: 2) |
  | notify.message_ignore | repair | error | Corrupt |
  +-----------------------+--------+----------+----------------------------------------------+
  2 rows in set (0.00 sec)

使用格式化文件frm重新创建索引文件
  mysql> repair table message_ignore USE_FRM;
  +-----------------------+--------+----------+----------+
  | Table | Op | Msg_type | Msg_text |
  +-----------------------+--------+----------+----------+
  | notify.message_ignore | repair | status | OK |
  +-----------------------+--------+----------+----------+
  1 row in set (0.02 sec)
  mysql>
  mysql> check table message_ignore;
  +-----------------------+-------+----------+----------+
  | Table | Op | Msg_type | Msg_text |
  +-----------------------+-------+----------+----------+
  | notify.message_ignore | check | status | OK |
  +-----------------------+-------+----------+----------+
  1 row in set (0.02 sec)

  修复后,数据可以正常查询
  mysql> select * from message_ignore limit 1;
  Empty set (0.00 sec)

  如果是格式化文件frm损坏,可以从slave拷贝过来即可,或者从备份中恢复。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|魔方软件 ( 京ICP备08008787号 )

京公网安备 11010702001722号

GMT+8, 2025-9-15 06:17 , Processed in 0.068334 second(s), 16 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表