MySQL数据库表修复 MyISAM
一:MySQL中MyISAM表损坏原因总结: 1、 服务器突然断电导致数据文件损坏;强制关机,没有先关闭mysql 服务;mysqld 进程在写表时被杀掉。 二:MySQL中MyISAM表损坏的症状总结: 1 、查询数据时报出错误:Incorrect key file for table: '...'. Try to repair it 三:MySQL中MyISAM表损坏的预防: 1 、定期检查MyISAM 表。可以使用myisamchk,也可以使用mysqlcheck,还可以使用check table。 四:MySQL中MyISAM表损坏的修复总结: 1 、如果mysqld已经宕掉,且无法启动,那么可以通过mysiamchk工具来进行修复。此工具在mysqld服务没有启动时才可以使用。该工具可以检查并分析修复MyISAM表。 MySQL数据表损坏的巧妙修复 修复mysql表之前首先要知道是哪个表出了问题 可以用root登录后在information_schema里查找有问题的表名 select TABLE_SCHEMA as DB_DBNAME,TABLE_NAME from INFORMATION_SCHEMA.tables where engine is null; 可以通过事件查看器里是否有 应用程序日志--类型为"错误"--事件来源为"Mysql"的错误日志,大概内容为 1 xxxxx: Table '.xxxx' is marked as crashed and should be repaired 或者直接在phpmyadmin中查看有哪些表出了问题比如显示“使用中” 如果查到问题表后,可以使用一下命令来修复mysql数据库中的MYISAM表 1、check,repair 例如abc的test表有问题 复制代码 代码如下: 2. myisamchk,isamchk 其中myisamchk适用于MYISAM类型的数据表,而isamchk适用于ISAM类型的MySQL数据表。这两条命令的主要参数相同,一般新的系统都使用MYISAM作为缺省的数据表类型,这里以myisamchk为例子进行说明。当发现某个数据表出现问题时可以使用: myisamchk tablename.MYI 进行检测,如果需要修复的话,可以使用: myisamchk -of tablename.MYI 关于myisamchk的详细参数说明,可以参见它的使用帮助。需要注意的时在进行修改时必须确保MySQL服务器没有访问这个MySQL数据表,保险的情况下是最好在进行检测时把MySQL服务器Shutdown掉。 mysqladmin -uroot -p shutdown 另外可以把下面的命令放在你的rc.local里面启动MySQL服务器前: [ -x /tmp/MySQL.sock ] && /pathtochk/myisamchk -of /DATA_DIR/*/*.MYI 其中的/tmp/MySQL.sock是MySQL监听的Sock文件位置,对于使用RPM安装的用户应该是/var/lib/MySQL/MySQL.sock,对于使用源码安装则是/tmp/MySQL.sock可以根据自己的实际情况进行变更,而pathtochk则是myisamchk所在的位置,DATA_DIR是你的MySQL数据库存放的位置。 需要注意的时,如果你打算把这条命令放在你的rc.local里面,必须确认在执行这条指令时MySQL服务器必须没有启动! 3、检测修复所有数据库(表) 复制代码 代码如下: (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |