mysql .frm 损坏_MySQL数据库下.frm .MYD .MYI损坏恢复操作

将数据库内容物理文件直接导入到mysqldata下,每只表各3个文件,依次分别为:.frm .MYD .MYI,data下的文件夹名就是数据库名

首先我第一想到的是去网上搜索,寻找类似的工具,试图通过工具来恢复已损坏的文件,于是我在GOOGLE上查找,找到一款名为MySQLRecovery 的工具,安装后我用其进行恢复,只可惜效果太不理想,几十M大的数据文件,恢复之后它提示我竟然只有几十K,令我吐血...

MySQL数据目录不是太难理解的。每一个数据库对应一个子目录,每个子目录中包含了对应于这个数据库中的数据表的文件。每一个数据表对应三个文件,它们和表名相同,但是具有不同的扩展名。tblName.frm文件是表的定义,它保存了表中包含的数据列的内容和类型。tblName.MYD文件包含了表中的数据。tblName.MYI文件包含了表的索引(例如,它可能包含lookup表以帮助提高对表的主键列的查询)。要检查一个表的错误,只需要运行 myisamchk(在MySQL的bin目录下)并提供文件的位置和表名,或者是表的索引文件名:pma.co

% 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服务是关闭的。

我在win2003下通过命令提示符,输入:

注:此为记录我当时操作的全部过程

D:Documents and SettingsAdministrator>c:

C:>cd mysql

C:mysql>cd data

C:mysqldata>cd hw_enterprice

C:mysqldatahw_enterprice>myisamchk function_products.frm

myisamchk 不是内部或外部命令,也不是可运行的程序

或批处理文件。

C:mysqldatahw_enterprice>cd

C:>cd mysql

C:mysql>cd bin

注:查看myisamchk的帮助信息

C:mysqlin>myisamchk

myisamchk  Ver 2.6 for Win95/Win98 at i32

By Monty, for your professional use

This software comes with NO WARRANTY: see the PUBLIC for details.

Description, check and repair of ISAM tables.

Used without options all tables on the command will be checked for errors

Usage: myisamchk [OPTIONS] tables[.MYI]

Global options:

-#, --debug=...     Output debug log. Often this is d:t:o,filename

-?, --help          Display this help and exit.

-O, --set-variable var=option

Change the value of a variable. Please note that

this option is deprecated; you can set variables

directly with --variable-name=value.

-t, --tmpdir=path   Path for temporary files

-s, --silent        Only print errors.  One can use two -s to make

myisamchk very silent

-v, --verbose       Print more information. This can be used with

--description and --check. Use many -v for more verbosity!

-V, --version       Print version and exit.

-w, --wait          Wait if table is locked.

Check options (check is the default action for myisamchk):

-c, --check         Check table for errors

-e, --extend-check  Check the table VERY throughly.  Only use this in

extreme cases as myisamchk should normally be able to

find out if the table is ok even without this switch

-F, --fast          Check only tables that havent been closed properly

-C, --check-only-changed

Check only tables that have changed since last check

-f, --force         Restart with -r if there are any errors in the table.

States will be updated as with --update-state

-i, --information   Print statistics information about table that is checked

-m, --medium-check  Faster than extend-check, but only finds 99.99% of

all errors.  Should be good enough for most cases

-U  --update-state  Mark tables as crashed if you find any errors

-T, --read-only     Dont mark table as checked

Repair options (When using -r or -o)

-B, --backup        Make a backup of the .MYD file as filename-time.BAK

--correct-checksum  Correct checksum information for table.

-D, --data-file-length=#  Max length of data file (when recreating data

file when its full)

-e, --extend-check  Try to recover every possible row from the data file

Normally this will also find a lot of garbage rows;

Dont use this option if you are not totally desperate.

-f, --force         Overwrite old temporary files.

-k, --keys-used=#   Tell MyISAM to update only some specific keys. # is a

bit mask of which keys to use. This can be used to

get faster inserts!

-r, --recover       Can fix almost anything except unique keys that arent

unique.

-n, --sort-recover  Forces recovering with sorting even if the temporary

&nbsp

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值