myisam表修复---check/repair
在检查、修复表,除了用myisamchk,还可以用check table、repair table来完成,下面来总结下
1.检查表是否有错误
CHECK TABLE对MyISAM和InnoDB表有作用。对于MyISAM表,关键字统计信息会被更新,CHECK TABLE也可以检查视图是否有错误,
比如在视图定义中被引用的表已不存在。
一些只对myisam表有作用(对innodb和视图无效)的选项介绍:
QUICK:不扫描行,不检查错误的链接。
FAST:只检查没有被正确关闭的表。
CHANGED:只检查自上次检查后被更改的表,和没有被正确关闭的表。
MEDIUM:扫描行,以验证被删除的链接是有效的。也可以计算各行的关键字校验和,并使用计算出的校验和验证这一点。
EXTENDED:对每行的所有关键字进行一个全面的关键字查找。这可以确保表是100%一致的,但是花的时间较长,所以很少使用。
常用的全面常规检查
mysql> check table t1 medium;
等价
# myisamchk --medium-check tablename
快速检查没有被正确关闭的表
mysql> check table t1 quick fast;
2.修复有错误的表
REPAIR TABLE用于修复被破坏的表。
默认情况下,REPAIR TABLE与myisamchk --recover tbl_name具有相同的效。
REPAIR TABLE对MyISAM和ARCHIVE表起作用
语法如下:
REPAIR [LOCAL | NO_WRITE_TO_BINLOG] TABLE tbl_name [, tbl_name] ... [QUICK] [EXTENDED] [USE_FRM]
quick:repair只修复索引,等价于“myisamchk --recover --quick tablename”
extended:MySQL会一行一行地创建索引行,等价于”myisamchk --safe-recover tablename“
use_frm:如果.MYI索引文件缺失或标题被破坏,则使用此选项,用来自.frm文件重新创建.MYI文件。这种修复不能使用myisamchk来完成;在repair常规无法完成时,才会使用这个选项,如果表被压缩不能使用。
no_write_to_binlog:repair默认是写到二进制文件的,如果有主从模式的话,repair也会在从库执行;使用此选项将会禁止写入到二进制文件中。
分享到:
相关推荐
在MySQL数据库管理与维护的过程中,表修复是一项非常重要的工作,特别是在使用MyISAM存储引擎时。当遇到诸如数据损坏、表结构错误等问题时,能够快速有效地进行表修复至关重要。本文将详细探讨“mysql表修复的实用...
本文将深入探讨MyISAM表损坏的原因、症状、预防措施以及修复方法。 一、MyISAM表损坏的原因 1. 突然断电:当服务器在执行写操作时突然断电,可能导致数据文件损坏。 2. 强制关机:没有正常关闭MySQL服务就直接关机...
- 使用`mysqlcheck`工具修复所有表:`/usr/local/mysql/bin/mysqlcheck --all-databases -uUSERNAME -pPASSWORD -r` 为了预防表崩溃,可以在`my.cnf`配置文件中添加`myisam-recover=backup,force`,这样MySQL会在...
MySQL中的`mysqlcheck`是一个非常实用的命令行工具,它专用于检查、修复、优化以及分析MyISAM存储引擎的表。在不中断MySQL服务器运行的情况下,`mysqlcheck`提供了与`myisamchk`类似的功能,但它更安全且易于使用。...
`mysqlcheck`是一个非常实用的客户端工具,它提供了对MyISAM表的检查、修复、优化和分析功能。这个命令行工具整合了MySQL客户端中的多个功能,使得数据库维护变得更加便捷。 `mysqlcheck`的基本用法包括三种形式: ...
先用`CHECK TABLE`检查表是否损坏,如果发现问题,再使用`REPAIR TABLE`进行修复。 2. **MyISAM表过大,无法访问** 当MyISAM表占用空间过大,导致访问问题时,可以使用`myisamchk`命令查看表的大小,并通过`ALTER...
- 如果修复不成功,可以尝试`myisamchk -o <tablename>`来优化表,这可能会帮助修复损坏的部分。 2. **使用MySQL的`CHECK TABLE`和`REPAIR TABLE`命令**: - 首先检查表是否存在问题:`CHECK TABLE ;`。 - 根据...
可以尝试用`REPAIR TABLE`来修复表: ```sql mysql> REPAIR TABLE 表名; ``` 2. **使用`mysqlcheck`工具**: `mysqlcheck`的`-r`选项用于修复表: ```bash mysqlcheck -r 数据库名 表名 -uroot -p密码 ``` ...
本文将详细介绍如何使用MySQL自带的`mysqlcheck`工具进行数据表的修复。 `mysqlcheck`是MySQL提供的一款实用程序,它可以对数据库进行检查、优化、修复、分析等多种操作。当遇到“is marked as crashed and should ...
总结来说,修复MySQL数据表损坏的方法主要包括使用SQL语句`check table`和`repair table`,以及通过命令行工具`myisamchk`。在日常维护中,定期检查数据表的健康状况,并确保有备份策略,能有效防止数据丢失。在遇到...
如果上述方法无法修复损坏的表,可以尝试使用MySQL自带的CHECK TABLE和REPAIR TABLE命令。例如,使用以下SQL命令来修复表: REPAIR TABLE `tblName`; 同时,如果怀疑是索引文件 (*.MYI) 出现了问题,可以通过数据...
- “The storage engine for the table doesn't support repair”提示信息表明该存储引擎不支持修复操作,可以忽略这种表。 - 有时候快速修复命令执行过快可能看不到结果,可以将输出重定向到文本文件中查看。 - ...
- 定期使用myisamchk检查MyISAM表,建议在mysqld停止后执行check table命令。 - 执行大量更新或删除操作后,使用OPTIMIZE TABLE优化表,减少损坏风险。 - 正常关闭mysqld服务,避免使用kill -9命令。 - 使用UPS...
MyISAM 类型的表可能会损坏,可以使用 `CHECK TABLE` 语句来检查 MyISAM 表的健康,并用 `REPAIR TABLE` 语句修复一个损坏的 MyISAM 表。 MyISAM 的表还支持 3 种不同的存储格式:静态(固定长度)表、动态表和压缩...
不同于MyISAM存储引擎,InnoDB表的损坏通常不能简单地通过`REPAIR TABLE`命令来修复。下面将详细介绍处理MySQL数据库InnoDB表损坏的步骤,以及如何从备份中恢复。 1. **识别问题**: 错误日志中的信息是诊断问题的...