推荐:Windows Server 2003 下配置 MySQL 集群(Cluster)教程这篇文章主要介绍了Windows Server 2003 下配置 MySQL 集群(Cluster)教程,本文先是讲解了原理知识,然后给出详细配置步骤和操作方法,需要的朋友可以参考下 MySQL 群集是 MySQL 适合于分布式计算环境的高可用、高冗余版本。它采用了 NDB Cluster 存储引擎,允许在 1 个群

这篇文章主要介绍了mysql数据库索引损坏及修复经验分享,需要的朋友可以参考下

mysql表索引被破坏的问题及解决

下午上班,惊闻我的dedecms的网站出问题了,访问一看,果然全屏报错,检查mysql日志,错误信息为:

Table '.\dedecmsv4\dede_archives' is marked as crashed and should be repaired

提示说cms的文章表dede_archives被标记有问题,需要修复。于是赶快恢复历史数据,上网查找原因。最终将问题解决。解决方法如下:

找到mysql的安装目录的bin/myisamchk工具,在命令行中输入:

myisamchk -c -r ../data/dedecmsv4/dede_archives.MYI

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

问题分析:

1、错误产生原因,有网友说是频繁查询和更新dede_archives表造成的索引错误,因为我的页面没有静态生成,而是动态页面,因此比较同意

这种说法。还有说法为是MYSQL数据库因为某种原因而受到了损坏,如:数据库服务器突发性的断电、在提在数据库表提供服务时对表的原文件

进行某种操作都有可能导致MYSQL数据库表被损坏而无法读取数据。总之就是因为某些不可测的问题造成表的损坏。

2、问题解决办法。

当你试图修复一个被破坏的表的问题时,有三种修复类型。如果你得到一个错误信息指出一个临时文件不能建立,删除信息所指出的文件并再

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

这三种修复方法如下所示:

% myisamchk --recover --quick /path/to/tblName

% myisamchk --recover /path/to/tblName

% myisamchk --safe-recover /path/to/tblName

第一种是最快的,用来修复最普通的问题;而最后一种是最慢的,用来修复一些其它方法所不能修复的问题。

检查和修复MySQL数据文件

如果上面的方法无法修复一个被损坏的表,在你放弃之前,你还可以试试下面这两个技巧:

如果你怀疑表的索引文件(*.MYI)发生了不可修复的错误,甚至是丢失了这个文件,你可以使用数据文件(*.MYD)和数据格式文件(*.frm)重新生

成它。首先制作一个数据文件(tblName.MYD)的拷贝。重启你的MySQL服务并连接到这个服务上,使用下面的命令删除表的内容:

mysql> DELETE FROM tblName;

在删除表的内容的同时,会建立一个新的索引文件。退出登录并重新关闭服务,然后用你刚才保存的数据文件(tblName.MYD)覆盖新的(空)数据

文件。最后,使用myisamchk执行标准的修复(上面的第二种方法),根据表的数据的内容和表的格式文件重新生成索引数据。

如果你的表的格式文件(tblName.frm)丢失了或者是发生了不可修复的错误,但是你清楚如何使用相应的CREATE

TABLE语句来重新生成这张表,你可以重新生成一个新的.frm文件并和你的数据文件和索引文件(如果索引文件有问题,使用上面的方法重建一

个新的)一起使用。首先制作一个数据和索引文件的拷贝,然后删除原来的文件(删除数据目录下有关这个表的所有记录)。

启动MySQL服务并使用当初的CREATE

TABLE文件建立一个新的表。新的.frm文件应该可以正常工作了,但是最好你还是执行一下标准的修复(上面的第二种方法)。

3、myisamchk工具介绍(见mysql的官方手册)

可以使用myisamchk实用程序来获得有关数据库表的信息或检查、修复、优化他们。myisamchk适用MyISAM表(对应.MYI和.MYD文件的表)。

调用myisamchk的方法:

shell> myisamchk [options] tbl_name ...

options指定你想让myisamchk做什么。在后面描述它们。还可以通过调用myisamchk --help得到选项列表。

tbl_name是你想要检查或修复的数据库表。如果你不在数据库目录的某处运行myisamchk,你必须指定数据库目录的路径,因为myisamchk不知

道你的数据库位于哪儿。实际上,myisamchk不在乎你正在操作的文件是否位于一个数据库目录;你可以将对应于数据库表的文件拷贝到别处并

且在那里执行恢复操作。

如果你愿意,可以用myisamchk命令行命名几个表。还可以通过命名索引文件(用“

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

所有的MyISAM表:

shell> myisamchk *.MYI

如果你不在数据库目录下,可通过指定到目录的路径检查所有在那里的表:

shell> myisamchk /path/to/database_dir*.MYI

推荐的快速检查所有MyISAM表的方式是:

shell> myisamchk --silent --fast /path/to/datadir*.MYI

该命令假定你有大于64MB的自由内存。关于用myisamchk分配内存的详细信息,参见5.9.5.5节,“myisamchk内存使用”

当你运行myisamchk时,必须确保其它程序不使用表。否则,当你运行myisamchk时,会显示下面的错误消息:

warning: clients are using or haven't closed the table properly

这说明你正尝试检查正被另一个还没有关闭文件或已经终止而没有正确地关闭文件的程序(例如mysqld服务器)

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

TABLES强制清空仍然在内存中的任何表修改。当你运行myisamchk时,必须确保其它程序不使用表。避免该问题的最容易的方法是使用CHECK

TABLE而不用myisamchk来检查表。

分享:在CentOS上安装phpMyAdmin的教程这篇文章主要介绍了在CentOS上安装phpMyAdmin的教程,phpMyAdmin是一款借助PHP脚本来操作MySQL的工具,非常具有人气,需要的朋友可以参考下 前提 在CentOS上安装phpMyAdmin,你第一步需要架设一台Web服务器(如Apache或nginx),安装好MySQL/MariaDB数据库和PHP。根据你的偏

mysql 索引修复_mysql数据库索引损坏及修复经验分享相关推荐

  1. mysql建立索引 性能测试_mysql数据库索引的建立以及性能测试

    ##---------mysql学习(四)索引的建立--------### #今天突然开窍了,所以补充点索引方面的知识. #创建索引,这里仍然以数据较少的mytab表为例: #原数据为: mysql& ...

  2. mysql查询返回xml格式_MySQL数据库查询操作XML的经验分享

    mysql里面有内置的操作xml的函数.分别是ExtractValue()和UpdateXML()函数. 语法:1EXTRACTVALUE (fiedname, XPathstring); 第一个参数 ...

  3. 【图像修复】基于matlab损坏图像修复【含Matlab源码 731期】

    一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[图像修复]基于matlab损坏图像修复[含Matlab源码 731期] 点击上面蓝色字体,直接付费下载,即可. 获取代码方式2: 付费专栏 ...

  4. mysql 数据索引使用_mysql数据库正确建立索引及使用

    普通mysql运行,数据量和访问量不大的话,是足够快的,但是当数据量和访问量剧增的时候,那么就会明显发现MySQL很慢,甚至down掉,那么就要考虑优化我们的mysql了.其中优化mysql的一个重要 ...

  5. mysql 一个字段走索引吗_mysql数据库--explain(查询表是否走索引)各个字段含义...

    1.1 id列 数字越大越先执行,如果说数字一样大,那么就从上往下依次执行,id列为null的就表是这是一个结果集,不需要使用它来进行查询. 1.2 select_type列 常见的有: ◆ simp ...

  6. mysql索引方式_MySQL数据库的索引方式

    MySQL目前主要支持索引方法:B-Tree,Hash,R-Tree B-Tree B-Tree是最常见的索引类型,所有的列都是排序过的,每个叶节点跟节点距离相等.因此,B-Tree适合查找范围的数据 ...

  7. java中mysql数据库原理_MySql数据库索引原理

    本文主要是阐述索引机制,主要是说明存储引擎Innodb 第一部分主要从及理论层面讨论MySQL索引的数理基础. 第二部分结合MySQL数据库中InnoDB数据存储引擎中索引的实现讨论聚集索引.非聚集索 ...

  8. mysql数据库索引的作用_mysql数据库索引和引擎

    1. 数据库索引 1.1 索引作用 当我们在数据库表中查询数据时,若没有索引,会逐个遍历表格中的所有记录,表格中数据记录量大时很耗时.建立索引就像创建目录一样,直接通过索引找到数据存储位置,加快查找. ...

  9. mysql索引 聚集索引_MySql数据库索引-聚集索引和辅助索引

    InnoDB存储引擎索引: B+树索引:不能找到一个给定键值的具体行,能找到的只是被查找数据行所在的页.然后把页加载到内存,在查询所要的数据. 全文索引: 哈希索引:InnoDB会根据表的使用情况自动 ...

最新文章

  1. 移植uboot第六步:支持NANDFlash
  2. 大型“数码管”解决方案:用了 28 个舵机的时钟,到底有什么特别?
  3. lesson5 元组
  4. 区块链系列教程之:比特币中的网络和区块链
  5. mycat mysql端口多少_mycat 9066管理端口 常用命令
  6. Linux 查看文件位置/查看文件路径的命令
  7. java+向前进一_Java 线程基础
  8. A+B Problem(洛谷-P1001)
  9. mysql not like 没用_PHP - 使用NOT LIKE时,mysql查询不起作用
  10. 苹果已招聘两名梅赛德斯前工程师 其中一人曾在保时捷工作近6年
  11. android 自动生成aidl,[Android]用AIDL生成Service
  12. 图像融合(四)-- 对比度金字塔
  13. java常用string inputStream转换
  14. MySQL错误号码1862:your password has expired
  15. 超级推荐!!值得收藏的黑客系列书:《黑客攻防实战xx》系列图书简介,一共4本
  16. java护眼的颜色_爱护眼睛,从IDEA开始,护眼色设置走起-护眼设置
  17. 中国人工智能(AI)发展历程、AI产业重点发展区域、重点发展城市及中国AI产业地区发展总结及展望
  18. iphone5s越狱之后必装
  19. 产品设计:Material Design 学习笔记一
  20. 区块链金融的现状与展望

热门文章

  1. conda安装tensorflow-gpu=2.2.0
  2. BERT微调效果不佳?不如试试这种大规模预训练模型新范式
  3. java里不支持post请求_java – Spring Boot – 不支持请求方法’POST’
  4. php结束外部程序,PHP执行外部程序的方法
  5. 和java转换_java基础之 类型转换
  6. unity如何得到所有子对象_Unity用户手册-Mesh合批
  7. Typora导出PDF时一直处于正在导出的状态
  8. 数学建模-2.优劣解距离法Topisis模型
  9. 软件架构-里氏替换原则
  10. linux gfs文件系统,Linux环境下使用GFS文件系统