如何修复损坏的MySQL
数据库; Y5 f( P: N4 L# L
8 `8 n0 @3 a7 V; H技巧主题根目录-=%26gt;
系统服务-=%26gt;数据服务
+ w" h# ]; e4 P- S
$ V$ d4 [9 |8 ^/ ^& K6 H o
技巧作者泛舟
2 ~" g, r9 f0 b8 G- i; f7 x
发表
时间2002-10-0915:32:22
5 m W. b! @) v7 { _* z: P4 v2 O. M) y4 g
--------------------------------------------------------------------------------
; v1 |0 [9 Z$ T! D# ?$ C
0 q, n% F/ S" x( {由于断电或非正常关机而导致MySQL数据库出现错误是非常常见的问题。MySQL分别针对不同的数据表
类型提供了多个数据检测恢复工具,这些工具是:
# V* w0 ~3 E% ^
% }5 ~! F+ h D1 T, y
myisamchk
& a6 Z2 _+ Q( v" O$ Eisamchk
. |8 {8 d3 h0 A# E% E
& J( q0 K$ N, h5 ~
其中myisamchk适用于MYISAM类型的数据表,而isamchk适用于ISAM类型的数据表。这两条命令的主要参数相同,一般新的系统都使用MYISAM作为缺省的数据表类型,这里以myisamchk为例子进行说明。当发现某个数据表出现问题时可以使用:
0 h- k/ S/ v. V" C1 V9 u+ ~4 |/ @
: u; v8 P! E" K, e7 ~myisamchktablename.MYI
8 [& F2 C6 I: s) d; C1 Y8 {3 c9 M& \5 o
进行检测,如果需要修复的话,可以使用:
5 O0 n. m6 @3 k* I
) g" e8 B: N; `& [6 C: ]/ a
myisamchk-oftablename.MYI
, A# q# B7 O* Y. T
) a3 K- x) o! r) I; K& a3 M) w
关于myisamchk的详细参数说明,可以参见它的使用帮助。需要注意的时在进行修改时必须确保MySQL
服务器没有访问这个数据表,保险的情况下是最好在进行检测时把MySQL服务器Shutdown掉。
2 F4 P3 Z A3 K3 B2 c, t: e
另外可以把下面的命令放在你的rc.local里面启动MySQL服务器前:
+ a0 F0 o e+ ^3 k1 U
0 L# {* C5 W! J3 a" m[-x/tmp/mysql.sock]%26%26/pathtochk/myisamchk-of/DATA_DIR/*/*.MYI
2 H5 g: O/ P. n$ ^1 i
- Y8 [ R2 Q8 v ]% k L. |% `( u2 m其中的/tmp/mysql.sock是MySQL监听的Sock文件位置,对于使用RPM安装的用户应该是/var/lib/mysql/mysql.sock,对于使用源码安装则是/tmp/mysql.sock可以根据自己的实际情况进行变更,而pathtochk则是myisamchk所在的位置,DATA_DIR是你的MySQL数据库存放的位置。
% u2 p$ ]: u4 J- J
需要注意的时,如果你打算把这条命令放在你的rc.local里面,必须确认在执行这条指令时MySQL服务器必须没有启动!