MySQL重建或修复表或索引
2017-06-20 21:53
591 查看
2.11.3重建或修复表或索引
本节介绍如何重建或修复表或索引,这可能需要以下几点:对MySQL如何处理数据类型或字符集的更改。例如,排序规则中的错误可能已被更正,需要重建表以更新使用排序规则的字符列的索引。
所需的表修理或升级的报道
CHECK TABLE, mysqlcheck的,或 mysql_upgrade。
重建表的方法包括:
转储和重新加载方法
ALTER TABLE方法
维修表方法
转储和重新加载方法
如果您正在重建表,因为不同版本的MySQL在二进制(就地)升级或降级后将无法处理它们,则必须使用dump-and-reload方法。使用您的原始版本的MySQL升级或降级之前转储表。然后在升级或降级后重新加载表 。如果使用dump-and-reload方法重建表仅用于重建索引,则可以在升级或降级之前或之后执行转储。以后还要重新装载。
如果需要重建
InnoDB表,因为
CHECK TABLE操作表示需要进行表升级,请使用 mysqldump创建转储文件和 mysql来重新加载该文件。如果
CHECK TABLE操作表明存在损坏或导致
InnoDB失败,请参阅第14.21.2节“强制InnoDB恢复”以获取有关使用该
innodb_force_recovery选项重新启动的信息
InnoDB。要了解
CHECK TABLE可能遇到的问题类型,请参阅第13.7.2.2节“检查表语法”中的
InnoDB注释 。
要通过转储和重新加载来重建表,请使用 mysqldump创建转储文件和 mysql来重新加载文件:
mysqldump db_name t1 > dump.sql mysql db_name < dump.sql
要重建单个数据库中的所有表,请指定数据库名称,不带任何以下表名:
mysqldump db_name > dump.sql mysql db_name < dump.sql
要重建所有数据库中的所有表,请使用以下
--all-databases选项:
mysqldump --all-databases > dump.sql mysql < dump.sql
ALTER TABLE方法
要重建表ALTER TABLE,请使用“ null ”更改; 也就是说
ALTER TABLE, “ 更改 ”表以使用其已具有的存储引擎。例如,如果
t1是
InnoDB表,请使用以下语句:
ALTER TABLE t1 ENGINE = InnoDB;
如果您不确定在
ALTER TABLE语句中要指定哪个存储引擎 ,请使用
SHOW CREATE TABLE显示表定义。
维修表方法
该REPAIR TABLE方法只适用于
MyISAM,
ARCHIVE和
CSV表。
您可以使用
REPAIR TABLE,如果表检查操作表明存在腐败或需要升级。例如,要修复
MyISAM表,请使用以下语句:
REPAIR TABLE t1;
mysqlcheck
--repair提供对
REPAIR TABLE语句的命令行访问。这可以是修复表的更方便的方法,因为您可以使用
--databases或
--all-databases选项分别修复特定数据库或所有数据库中的所有表:
mysqlcheck --repair --databases db_name ... mysqlcheck --repair --all-databases
相关文章推荐
- MySQL重建或修复索引
- 【mysql】mysql重建索引命令、查询数据表索引、创建索引、删除索引
- mysql重建索引
- [轉]MySQL创建、删除、重建和查看索引命令
- MySQL 创建索引、重建索引、查询索引、删除索引
- MySQL索引碎片修复
- MySQl创建、删除、重建和查看索引命令
- mysql创建、删除、重建、删除索引的操作命令的一些总结
- 官方mysql数据跨多硬盘方案,执行重建或修复表时,会使mysqld崩溃
- mysql修复表,索引
- MySQL创建、删除、重建和查看索引命令
- mysql修复表,索引
- MySQL 索引分析和优化
- 重建索引
- 重建数据库表所有索引
- MySQL查找的方式与索引的效率
- MYSQL 降序索引和减轻索引扫描
- MySQL索引分析和优化
- MySQL 索引分析和优化
- 在MySQL中 键名 索引 唯一 的概念分别是什么