表的故障检测和修正的一般过程如下:

检查出错的表。如果该表检查通过,则完成任务,否则必须修复出错的数据库表。

在开始修复之前对表文件进行拷贝,以保证数据的安全。

开始修复数据库表。

如果修复失败,从数据库的备份或更新日志中恢复数据。

在使用myisamchk或isamchk检查或修复表之前,应该首先注意:

建立数据库备份和使用更新日志,以防修复失败,丢失数据。

仔细阅读本章内容以后再进行操作,尤其是不应该在阅读“避免与MySQL服务器交互作用”之前进行操作。因为,在你没有足够的知识之前贸然操作,可能会引起严重的后果。

如果你在Unix平台上对表进行维护时,应该首先注册到专用的帐户 mysql,以避免对表读写访问产生所有权的问题,以及破坏数据库目录的所有权限。

数据库表的维护工具

MySQL的myisanchk和isamchk实用程序很类似,基本上它们具有同样的使用方法。它们之间的主要区别时所使用的表的类型。为了检查 /修复MyISAM表(.MYI和.MYD),你应该使用myisamchk实用程序。为了检查/修复ISAM表(.ISM和.ISD),你应该使用 isamchk实用程序。

为了使用任一个使用程序,应指明你要检查或修复的表,myisamchk和isamchk的使用方法为:

复制代码 代码如下:

shell>myisamchk options tbl_name

shell>isamchk options tbl_name

如果你愿意,你可以在命令行命名几个表。

你也能指定一个名字作为一个索引文件(用“ .MYI”或“.ISM”后缀),它允许你通过使用模式“*.MYI”或“.ISM”指定在一个目录所有的表。例如,如果你在一个数据库目录,你可以这样在目录下检查所有的表:

复制代码 代码如下:

shell> myisamchk *.MYI

shell>isamchk *.ISM

如果你不在数据库目录下,你可指定目录的路径:

复制代码 代码如下:

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

shell> isamchk options  /path/to/database_dir/*.ISM

你甚至可以通过为MySQL数据目录的路径指定一个通配符来作用于所有的数据库中的所有表:

复制代码 代码如下:

shell> myisamchk options /path/to/datadir/*/*.MYI

shell> isamchk options /path/to/database_dir/*/*.ISM

这个方法无法在windows平台下使用。

注意  不论是myisamchk还是isamchk都不对表所在的位置做任何判断,因此,应该或者在包含表文件的目录运行程序,或者指定表的路径名。这允许你将表文件拷贝到另一个目录中并用该拷贝进行操作。

检查数据库表

myisamchk和isamchk提供了表的检查方法,这些方法在彻底检查表的程度方面有差异。

标准的方法检查表

通常用标准的方法就足够了。对表使用标准的方法进行检查,不使用任何选项直接调用即可,或用-s或--silent选项的任何一个:

复制代码 代码如下:

myisamchk tbl_name

isamchk tbl_name

这能找出所有错误的99.99%。它不能找出的是仅仅涉及数据文件的损坏(这很不常见)。

完全彻底的数据检查

为了执行扩充检查,使用--extend-check或-e选项,这个选项检查数据:

复制代码 代码如下:

myisamchk -e tbl_name

isamchk -e tbl_name

它做一个完全彻底的数据检查(-e意思是“扩展检查”)。它对每一行做每个键的读检查以证实他们确实指向正确的行。这在一个有很多键的大表上可能花 很长时间。myisamchk通常将在它发现第一个错误以后停止。如果你想要获得更多的信息,你能增加--verbose(-v)选项。这使得 myisamchk或isamchk继续一直到最多20个错误。在一般使用中,一个简单的标准检查(没有除表名以外的参数)就足够了。

中等程度的检查

指定选项--medium-check或-m

复制代码 代码如下:

myisamchk -m tbl_name

中等程度的检查不如扩展检查彻底,但速度快一些。其意义不大,较少使用。

如果对于--extend-check检查不报告错误,则可以肯定表是完好的。如果你仍然感觉表有问题,那原因肯定在其它地方。应重新检查人和好像 有问题的查询以验证查询是正确书写的。如果你认为问题可能是MySQL服务器的原因,应该考虑整理一份故障报告或者升级到新的版本上。

可能有用的检查选项:

1.-i或—information 打印统计信息,例如:

复制代码 代码如下:

myisamchk -e -i tbl_name

象前面的命令一样,但是-i选项告诉myisamchk还打印出一些统计信息。

2.-C, --check-only-changed

只检查上一次检查后被修改的表

MySQL故障检测_检测MySQL的表的故障的方法相关推荐

  1. mysql数据库维护_维护MySQL数据库表

    在本教程中,我们将向您介绍一些非常有用的语句,使您可以在MySQL中维护数据库表. MySQL提供了几个有用的语句,可以有效地维护数据库表. 这些语句使您能够分析,优化,检查和修复数据库表. 分析表语 ...

  2. mysql 显示表_显示MYSQL表信息的方法

    MYSQL表信息的查看方法是我们经常要实现的功能,下面就为您介绍显示MYSQL表信息的方法,如果您对MYSQL表信息方面感兴趣的话,不妨一看. 在用mysql时(show tables),有时候需要查 ...

  3. php和mysql联合_[转]mysql联合索引

    命名规则:表名_字段名 1.需要加索引的字段,要在where条件中 2.数据量少的字段不需要加索引 3.如果where条件中是OR关系,加索引不起作用 4.符合最左原则 https://segment ...

  4. mysql整备_【mysql】使用xtrabackup在线增量备份及恢复数据库

    一.Percona Xtrabackup 简介 1.Xtrabackup  bin目录文件 介绍 1)innobackupex innobackupex 是xtrabackup的一个符号链接 . in ...

  5. mysql 优化_常用MySQL优化

    1.大批量插入数据优化 (1)对于MyISAM存储引擎的表,可以使用:DISABLE KEYS 和 ENABLE KEYS 用来打开或者关闭 MyISAM 表非唯一索引的更新. ALTER TABLE ...

  6. 阿里云查看mysql版本_查看mysql版本的四种方法及常用命令

    [shengting@login ~]$ mysql -V mysql Ver 14.7 Distrib 4.1.10a, for redhat-linux-gnu (i686) 2:在mysql中: ...

  7. xshell安装mysql步骤_数据库Mysql与禅道安装

    一.Linux上搭建禅道 Mysql 是关系型数据库管理系统 1.下载安装包:将安装包直接解压到/opt目录下,不要 解压到别的目录在拷贝到/opt/,因为这样会导致文件的所有者和读写权限改变 2.解 ...

  8. mysql哪些_初学MySQL哪些需要你知道

    MySQL的基本命令 [ ]中的内容为可选项 --创建数据库 mysql> create database 数据库名称 --创建表 mysql> create table 表名 ( 列的名 ...

  9. mariab修改mysql端口_修改mysql/MariaDB数据库的端口号+远程

    1.修改端口 2.远程+开放端口 (1)设置远程账号:xxx和密码yyyyyyy grant all privileges on *.* to 'xxx'@'%' identified by 'yyy ...

最新文章

  1. 使用echo输出一绝对路径,使用egrep取出其基名
  2. oracle参数文件initorcl位置,oracle 参数文件详解
  3. 胡凌:隐私的终结——大数据时代的个体生活危机
  4. Spring事务CallbackPreferringPlatformTransactionManager
  5. java oschina_简单说说 OSChina 的技术架构
  6. Hbase Compaction 源码分析 - CompactSplitThread 线程池选择
  7. KAFKA 最新版 单机安装、配置、部署(linux环境)
  8. [深入学习C#]匿名函数、委托和Lambda表达式
  9. 9. GD32F103C8T6 定时器2的更新中断触发定时器0开始计时
  10. webrtc静音检测
  11. c#使用私有构造方法
  12. Google Hacker
  13. 《皇帝内经》养生法则
  14. 书摘---创业36条军规7:业务的五个问题
  15. FAT学习笔记(四)——Dir Entry
  16. ei检索的cpss_我想查EI会议论文检索情况,请问是如何查询的呢?
  17. turf:计算面积、折线长度和两点距离
  18. Unity3d中的走路动画
  19. 解决nrm ls命令没有*(星号)的问题
  20. Warning: Leaking Caffe2 thread-pool after fork

热门文章

  1. java rsa 公钥加密_java – 使用公钥进行RSA解密
  2. android炫酷叼ui,XUI: 一个简洁而优雅的Android原生UI框架,解放你的双手!
  3. linux 中如何查看块设备,在linux中,如何确定使用块设备的进程?
  4. jsapi支付签名_微信支付JSAPI:商户签名错误
  5. C++ vector查找某个特定元素是否存在
  6. C语言定义外部文件可使用的结构体和结构体变量
  7. keras.metrics中的accuracy
  8. python+OpenCV图像处理(十一)图像轮廓检测
  9. Linux 编译 没有path,编译linux-2.6.21的问题-‘PATH_MAX’ undeclared
  10. C++学习之路 | PTA(甲级)—— 1043 Is It a Binary Search Tree (25分)(带注释)(精简)