`

mysql 数据恢复

阅读更多

由于临时断电,使用kill -9中止MySQL服务进程,所有的这些都可能会毁坏MySQL的数据文件。如果在被干扰时,服务正在改变文件,文件可能会留下错误的或不一致的状态。因为这样的毁坏有时是不容易被发现的,当你发现这个错误时可能是很久以后的事了。于是,当你发现这个问题时,也许所有的备份都有同样的错误。

MySQL参考手册的第十五章讲述了MySQL自带的myisamchk的功能,以及如何使用它检查和修复你的MySQL数据文件。虽然这一章对于每个想要搭建一个强壮的MySQL服务的人都是推荐阅读的,我们还是有必要在这里对其中的要点进行讨论。

在我们继续之前,你必须意识到myisamchk程序对用来检查和修改的MySQL数据文件的访问应该是唯一的。如果MySQL服务正在使用某一文件,并对myisamchk正在检查的文件进行修改,myisamchk会误以为发生了错误,并会试图进行修复--这将导致MySQL服务的崩溃!这样,要避免这种情况的发生,通常我们需要在工作时关闭MySQL服务。作为选择,你也可以暂时关闭服务以制作一个文件的拷贝,然后在这个拷贝上工作。当你做完了以后,重新关闭服务并使用新的文件取代原来的文件(也许你还需要使用期间的变更日志)。

MySQL数据目录不是太难理解的。每一个数据库对应一个子目录,每个子目录中包含了对应于这个数据库中的数据表的文件。每一个数据表对应三个文件,它们和表名相同,但是具有不同的扩展名。tblName.frm文件是表的定义,它保存了表中包含的数据列的内容和类型。tblName.MYD文件包含了表中的数据。tblName.MYI文件包含了表的索引(例如,它可能包含lookup表以帮助提高对表的主键列的查询)。

要检查一个表的错误,只需要运行myisamchk(在MySQL的bin目录下)并提供文件的位置和表名,或者是表的索引文件名:

以下为引用的内容:  
 myisamchk /usr/local/mysql/var/dbName/tblName
    myisamchk /usr/local/mysql/var/dbName/tblName.MYI 


上面的两个命令都可以执行对指定表的检查。要检查数据库中所有的表,可以使用通配符:

    以下为引用的内容:
myisamchk /usr/local/mysql/var/dbName/*.MYI 


要检查所有数据库中的所有表,可以使用两个通配符: myisamchk /usr/local/mysql/var/*/*.MYI

如果不带任何选项,myisamchk将对表文件执行普通的检查。如果你对一个表有怀疑,但是普通的检查不能发现任何错误,你可以执行更彻底的检查(但是也更慢!),这需要使用--extend-check选项:

以下为引用的内容:
myisamchk --extend-check /path/to/tblName 


对错误的检查是没有破坏性的,这意味着你不必担心执行对你的数据文件的检查会使已经存在的问题变得更糟。另一方面,修复选项,虽然通常也是安全的,但是它对你的数据文件的更改是无法撤消的。因为这个原因,我们强烈推荐你试图修复一个被破坏的表文件时首先做个备份,并确保在制作这个备份之前你的MySQL服务是关闭的。

当你试图修复一个被破坏的表的问题时,有三种修复类型。如果你得到一个错误信息指出一个临时文件不能建立,删除信息所指出的文件并再试一次--这通常是上一次修复操作遗留下来的。
    这三种修复方法如下所示:

以下为引用的内容:

    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文件应该可以正常工作了,但是最好你还是执行一下标准的修复(上面的第二种方法)。

可以使用mysql语句,用 CHECK TABLE $table; //其中$table代表数据表的名字,检测表是否损坏,如果损坏可以REPAIR TABLE $table 来修复,如果一次不行,可以多修复几次!

如果使用WIN服务器,可以先登陆DB服务器,进入此路径,不用进mysql里

以下为引用的内容:
D:\CD MYSQL

    D:\mysql>CD BIN

    D:\mysql\bin>MYISAMCHK -r d:\mysql\data\guild\msg_table.myi(msg_table)
    - check key delete-chain
    - check record delete-chain
    - recovering (with sort) MyISAM-table 'd:\mysql\data\guild\msg_table.myi'
    Data records: 23
    - Fixing index 1

    D:\mysql\bin>MYISAMCHK --safe-recover d:\mysql\data\guild\msg_table.myi
    - recovering (with keycache) MyISAM-table 'd:\mysql\data\guild\msg_table.myi'

Data records: 89

    D:\mysql\bin>

当不知道哪个表坏了,可以进入mysql数据库:
以下为引用的内容:
    use guild;
    desc msg_table; 看msg_table有没有坏 

修复好了进入MYSQL数据库中打命令检查:show table;

<!-- End articleData -->
 
分享到:
评论

相关推荐

    MySQL数据恢复

    MySQL数据恢复是一个重要的数据库管理任务,特别是在数据丢失或系统故障后,恢复数据是确保业务连续性和数据完整性不可或缺的环节。这篇博文将深入探讨MySQL数据恢复的相关知识点,包括常见的数据丢失场景、备份策略...

    MySQL数据恢复的三种常用的方式

    MySQL 数据恢复是数据库管理中的一项重要任务,尤其是在遭遇意外数据丢失、硬件故障或软件错误时。以下是三种常用的数据恢复方式的详细说明: 1. **通过表备份的方式**: 当数据表因各种原因如误删除、软件故障或...

    MySQL数据恢复软件-供大家学习研究参考

    MySQL数据恢复是一个重要的主题,尤其是在数据库管理中,数据的安全性和可恢复性是至关重要的。当面临数据丢失或数据库损坏的情况时,专业的MySQL数据恢复软件能够帮助我们找回宝贵的信息。本软件"sa_mysql_recovery...

    mysql恢复数据常用方法

    ### MySQL 数据恢复方法详解 #### 一、引言 在MySQL数据库管理中,数据安全至关重要。即便是经验丰富的DBA也可能因误操作导致数据丢失。本文将详细介绍如何在MySQL环境下利用binlog进行数据恢复,这对于刚接触...

    通过binlog日志进行mysql数据恢复

    通过binlog日志进行mysql数据恢复

    免费mysql数据恢复工具

    根据mysql数据日志文件,自动生成对应的建表sql和数据恢复sql,可以对数据名和表明进行过滤。适用于设置为完整日志格式下的mysql数据库还原,包括误操作数据、数据库崩溃等多种情况下的数据库数据恢复。 ※※※※...

    北亚RAID6数据恢复软件 v2.1.zip

    RAID6数据恢复软件V2.1是一款RAID6数据恢复软件,完全支持整个RAID6在缺少两块磁盘后进行完整数据恢复。 该软件是一款功能强大的RAID6数据恢复软件,完全支持整个RAID6在缺少两块磁盘后进行完整数据恢复。 完美...

    mysql通过data文件夹恢复数据和存储过程的方法

    #### 二、MySQL数据恢复基础知识 1. **逻辑备份与物理备份**: - **逻辑备份**通常是使用`mysqldump`工具将整个数据库导出为SQL脚本文件。 - **物理备份**则是直接复制数据库文件到备份介质上,如使用`cp`命令...

    详解MySQL误操作后怎样进行数据恢复

    总之,MySQL数据恢复主要依赖于二进制日志和定期的全量备份。正确开启binlog并定期备份是防止数据丢失的关键步骤。在出现误操作时,及时停止所有写入操作,然后按照上述步骤进行恢复,可以最大程度地减少数据损失。...

    MySql数据备份恢复

    二、MySQL数据恢复 1. **使用SQL脚本恢复**:恢复过程相对简单,只需将备份的SQL文件导入到MySQL服务器: ``` mysql -u [username] -p[password] [database_name] ``` 2. **基于二进制日志的恢复**:如果需要...

    mysql根据日志恢复数据详细步骤

    ### MySQL根据日志恢复数据详细步骤 #### 一、引言 MySQL作为一款广泛使用的开源关系型数据库管理系统,因其高效稳定、易于维护等特性而深受开发者喜爱...希望本文能够帮助读者更好地理解和掌握MySQL的数据恢复技巧。

    MySQL数据库恢复:数据守护者的秘籍

    在本篇文章中,我们将深入探讨MySQL的数据恢复机制,包括其重要性、基本步骤、不同类型的备份策略以及高级恢复策略,以帮助读者更好地理解和实施数据保护措施。 #### MySQL 数据恢复的重要性 数据恢复是任何数据库...

    Mysql8.0 数据库恢复工具

    文件级别数据库恢复工具软件,本软件适合于操作系统崩溃后将mysql数据目录拷贝出进行恢复,在恢复前需要使用之前备份的数据库结构新建空库,然后将还原文件的数据恢复到新库,目前只能恢复InnoDB引擎、MyISAM引擎 表...

    1.1.7 MySQL的数据如何恢复到任意时间点?.md

    1.1.7 MySQL的数据如何恢复到任意时间点?

    MySQl 通过.frm 和 .ibd文件恢复数据.pdf

    MySQL 数据恢复通过 .frm 和 .ibd 文件 MySQL 是一种广泛使用的关系型数据库管理系统,它提供了高效、安全和可靠的数据存储和管理机制。但是,在实际应用中,数据库可能会出现各种故障,例如数据丢失、表结构异常等...

    把mysql数据库中的数据导入到oracle数据库中

    #### 二、MySQL数据恢复 为了确保数据的完整性和准确性,首先需要将MySQL的备份文件恢复到一个测试数据库中,然后再进行迁移操作。 **1. 恢复步骤** - 批量执行`.sql`文件,在MySQL测试库中重新建立表并恢复数据...

    mysql数据库修复专家

    2. **数据恢复**:一旦发现可修复的错误,工具会尝试恢复数据,确保尽可能多的数据能够被挽救。 3. **日志分析**:对于InnoDB引擎,工具可能需要分析事务日志(Redo Log)来恢复未提交的事务,以保持数据一致性。 ...

    mysql innodb恢复数据工具.rar

    这是我从网上找到的mysql/mariadb对innodb表进行数据恢复的工具,实现从innodb的数据库文件中恢复数据,用于实现下面情况:1、直接下载了innodb数据库的文件,而不是导出其数据,想恢复数据时(需要有完整的文件,...

    mysql数据备份恢复

    MySQL 数据备份与恢复是数据库管理中的重要环节,它关乎到数据的安全性和业务的连续性。在本篇中,我们将深入探讨 MySQL 的三种主要备份恢复模式,以及如何利用工具如 `innobackupex` 实现高效的数据保护。 一、...

    MySQL日志和数据恢复

    然而,数据库系统难免会遇到问题,如意外的数据丢失、错误操作或系统崩溃等,这时MySQL的日志和数据恢复机制就显得尤为重要。本文将深入探讨MySQL中的日志类型以及如何利用这些日志进行数据恢复。 1. 错误日志 ...

Global site tag (gtag.js) - Google Analytics