mysql物理损坏修复_mysql数据库下损坏数据的恢复操作其过程总结

本文详细记录了使用myisamchk工具修复MySQL数据库中物理损坏的function_products表的过程。从检查错误、尝试快速恢复到安全恢复的步骤,过程中遇到了如记录删除链腐败、字节错误等问题,并最终通过–safe-recover选项成功修复表。
摘要由CSDN通过智能技术生成

C:\mysql\bin>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 haven’t 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 Don’t 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 it’s full)

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

Normally this will also find a lot of garbage rows;

Don’t 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 aren’t

unique.

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

file would be very big.

-p, –parallel-recover

Uses the same technique as ‘-r’ and ‘-n’, but creates

all the keys in parallel, in different threads.

THIS IS ALPHA CODE. USE AT YOUR OWN RISK!

-o, –safe-recover Uses old recovery method; Slower than ‘-r’ but can

handle a couple of cases where ‘-r’ reports that it

can’t fix the data file.

–character-sets-dir=…

Directory where character sets are

–set-character-set=name

Change the character set used by the index

-q, –quick Faster repair by not modifying the data file.

One can give a second ‘-q’ to force myisamchk to

modify the original datafile in case of duplicate keys

-u, –unpack Unpack file packed with myisampack.

Other actions:

-a, –analyze Analyze distribution of keys. Will make some joins in

MySQL faster. You can check the calculated distribution

by using ‘–description –verbose table_name’.

-d, –description Prints some information about table.

-A, –set-auto-increment[=value]

Force auto_increment to start at this or higher value

If no value is given, then sets the next auto_increment

value to the highest used value for the auto key + 1.

-S, –sort-index Sort index blocks. This speeds up ‘read-next’ in

applications

-R, –sort-records=#

Sort records according to an index. This makes your

data much more localized and may speed up things

C:\mysql\bin>myisamchk c:\mysql\data\hw_enterprice\function_products.frm

myisamchk: error: ‘c:\mysql\data\hw_enterprice\function_products.frm’ is not a M

yISAM-table

C:\mysql\bin>myisamchk c:\mysql\data\hw_enterprice\function_products.myi

Checking MyISAM file: c:\mysql\data\hw_enterprice\function_products.myi

Data records: 85207 Deleted blocks: 39

myisamchk: warning: Table is marked as crashed

myisamchk: warning: 1 clients is using or hasn’t closed the table properly

- check file-size

- check key delete-chain

- check record delete-chain

myisamchk: error: record delete-link-chain corrupted

- check index reference

- check data record references index: 1

- check data record references index: 2

- check data record references index: 3

- check record links

myisamchk: error: Wrong bytesec: 0-195-171 at linkstart: 841908

MyISAM-table ‘c:\mysql\data\hw_enterprice\function_products.myi’ is corrupted

Fix it using switch “-r” or “-o”

继续进行操作:

C:\mysql\bin>myisamchk –recover –quick c:\mysql\data\hw_enterprice\function_p

roducts.myi

- check key delete-chain

- check record delete-chain

myisamchk: error: record delete-link-chain corrupted

myisamchk: error: Quick-recover aborted; Run recovery without switch ‘q’

Updating MyISAM file: c:\mysql\data\hw_enterprice\function_products.myi

MyISAM-table ‘c:\mysql\data\hw_enterprice\function_products.myi’ is not fixed be

cause of errors

Try fixing it by using the –safe-recover (-o) or the –force (-f) option

系统提示我使用–safe-recover (-o) or the –force (-f) option进行修复操作,于是

C:\mysql\bin>myisamchk –safe-recover c:\mysql\data\hw_enterprice\function_prod

ucts.myi

- recovering (with keycache) MyISAM-table ‘c:\mysql\data\hw_enterprice\function_

products.myi’

Data records: 85207

Wrong bytesec: 0-195-171 at 841908; Skipped

Data records: 85215

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值