MySQL数据库索引损坏与修复经验分享

MySQL数据库索引损坏与修复经验分享
MySQL表索引被破坏的问题及解决方案

工作中,我听到了DedeCMS的网站访问问题,和全屏幕显示错误检查错误消息的MySQL日志:

表。 dnzsw04_archives'is dedecmsv4标记为坠毁,必须修复

这表明CMS的文章表dnzsw04_archives上标有问题需要修理,所以我们很快恢复历史数据和互联网搜索原因。最后,问题就解决了。解决方法如下:

bin / myisamchk工具发现MySQL的安装目录输入命令行:

myisamchk - C - R。 / / / dnzsw04_archives.myi dedecmsv4数据

然后myisamchk工具会帮助你恢复数据表的索引。重启MySQL和解决问题。

问题分析:

1,错误的原因。有网友说,他们经常查询和更新的dnzsw04_archives表引起的索引错误,因为我的页面不是静态生成的,而是动态的页面,所以我同意你的观点。

据说,MySQL数据库由于某种原因被损坏,例如数据库表提供服务时数据库服务器突然中断以及表上的原始文件

进行某种操作会导致MySQL数据库表被破坏,无法读取数据,这是因为一些不可测量的问题导致了表的损坏。

2。解决问题的办法。

当您尝试修复一个坏表的问题时,有三种类型的修复。如果您得到一个错误消息,不能设置临时文件,请删除所指出的信息,并再次删除。

尝试一次-这通常是由上次修复操作遗留下来的。

三种修复方法如下:

myisamchk --恢复--快速 / / /路径tblname %

% myisamchk -恢复 / / / tblname路径

% myisamchk --安全恢复 / / / tblname路径

第一个是最快的,用于修复最常见的问题;最后一个是最慢的,用于修复其他方法无法修复的问题。

检查并修复MySQL数据文件

如果上述方法不能修复损坏的表,在您放弃之前,您也可以尝试以下两种技术:

如果你怀疑表的索引文件(*.我)有一个未修复的错误或丢失的文件,你可以使用数据文件(*. MYD)和数据格式文件(*. FRM)再生。

做。首先,复制数据文件(tblname。MYD)。重新启动MySQL服务并将其连接到服务,并使用下面的命令来删除该表的内容:

MySQL >删除tblname;

当表的内容删除,创建新的索引文件。退出登录并重新关闭服务,然后覆盖新的(空)与数据文件中的数据(tblname。MYD)你刚刚救了。

文件。最后,kill -9用于执行标准的修复(二以上方法)再生基于表的数据和表的格式文件内容的索引数据。

如果格式文件(tblname。FRM)你表丢失或不可修复的错误,你知道如何使用相应的创建

表生成表,你可以重新生成一个新的。你的数据文件和索引文件的文件和文件。如果索引文件中有问题,可以使用上面的方法来重建它。

一个新的一起使用。首先,复制一个数据和索引文件,然后删除原始文件(删除数据目录中表的所有记录)。

启动MySQL服务并使用原始创建

桌上的文件建立一个新表。新的.frm文件应该正常工作,但它是最好的执行标准修正(第二段)。

3、myisamchk工具介绍(参见MySQL官方手册)

你可以用myisamchk实用程序来获取有关数据库表、信息核对、修正、优化。myisamchk应用MyISAM表(用于the.myi and.myd文件表)。

方法调用myisamchk:

壳> myisamchk {选项} tbl_name…

选项指定你想要myisamchk做。在后面描述他们。你也可以通过调用myisamchk得到选项列表,帮助。

tbl_name是一个数据库表,你要检查或修复。如果你不运行myisamchk数据库目录中的某个地方,你必须指定数据库目录的路径由于myisamchk不知道。

你的数据库在哪里事实上,myisamchk不在乎你正在处理的文件位于一个数据库目录。您可以在其他地方复制与数据库表对应的文件。

恢复操作在那里执行。

如果你想,你可以叫几桌用myisamchk命令行。你也可以使用一个名为索引文件(使用)

。我后缀)来指定一个表,它允许你通过使用模式*指定目录中的所有表。myi.for的例子,如果你在数据库目录,你可以检查它的目录下

所有的MyISAM表:

壳> myisamchk *。我

如果您不在数据库目录中,您可以通过指定目录路径来检查所有的表:

壳> myisamchk / / /路径database_dir *。我

推荐的方法来快速检查所有的MyISAM表:

壳> myisamchk --沉默--快 / / /路径datadir *。我

这个命令假设你有空闲内存大于64MB,在记忆与myisamchk配置详细信息,参见5.9.5.5部分,myisamchk内存使用

当你运行myisamchk,你必须确保其他程序不使用表。否则,当你运行myisamchk,下面的错误信息将被显示:

警告:客户正在使用或没有正确关闭表。

这表明你想检查一个程序,不关闭文件或关闭文件正确(如mysqld服务器)不关闭或终止。

如果mysqld正在运行,你必须通过冲洗

表强制排空仍在内存中的表进行修改。当你运行myisamchk,你必须确保其他程序不使用表。为了避免这个问题,最简单的方法是使用检查

而myisamchk表检查表。
免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部