实例
代码如下 | 复制代码 |
#locate myisamchk #ln -s /usr/local/mysql/bin/myisamchk /usr/bin/myisamchk #myisamchk tablename.MYI #myisamchk -r -q tablename |
如果-r不行就采用强制执行命令如下
代码如下 | 复制代码 |
#myisamchk -r -o -f |
好了根据上面我们来分享一个实例
MyISAM是MySQL的预设storage engine. MyISAM table很容易烂掉(corrupted)。
此文章将教你如何检查/修?驼庑├玫舻?yISAM tables.
每次你在MySQL DB ?造一个 table,将会在档案系统上同时?造出*.frm、*.MYD,跟*.MYI等三种格式的档案。
*.frm = 用来储存资料表格式(file to store table format)
*.MYD(MyData) = 用来储存资料(file to store data)
*.MYI(MyIndex) =用来储存索引(file to store index)
如何检查DB?哪个table 需要修?停?/p>
用root 执行以下指令,假设要检查DB1下的各个table
代码如下 | 复制代码 |
#myisamchk /var/lib/mysql/DB1/*.MYI >> /tmp/myisamchk.log |
萤幕输出中,如果发现以下字样,该资料表就应修??/p>
代码如下 | 复制代码 |
myisamchk: error: Keypointers and record positions doesn't match |
Redirect出来的档案中会显示更多资讯。如下
代码如下 | 复制代码 |
Checking MyISAM file: /var/lib/mysql/DB1/yam_bbauth.MYI |
如何利用myisamchk修?屠玫舻?ables:
找出烂掉的table之后,用以下指令修?停?/p>
代码如下 | 复制代码 |
#myisamchk –r /var/lib/mysql/DB1/news_post_comment.MYI |
如果table正被某个application使用,你可能会看到: clients are using or haven't closed the table properly。
所以建议修?颓敖?ysqld关掉或用FLUSH TABLES锁住TABLES,防止修?褪庇?pplication对DB TABLE做更动。
如何让检查跟修?屯?苯?校?/p>
代码如下 | 复制代码 |
#myisamchk --silent --force --fast --update-state /var/lib/mysql/DB1/*.MYI |
options 的意义如下:
? s, –silent option: Prints only errors. You can use two -s to make myisamchk very silent.
? -f, –force option: Restart myisamchk automatically with repair option -r, if there are any errors in the table.
? -F, –fast option: Check only tables that haven't been closed properly.
? -U –update-state option: Marks tables as crashed, when it finds any error.
修?褪笔侄?峙浼且涮甯?哟蟮?B
庞大的table,修?托枰?艹さ氖奔洹P?褪笨梢允侄?黾蛹且涮宀问??/p>
代码如下 | 复制代码 |
# myisamchk --silent --force --fast --update-state --key_buffer_size=512M --sort_buffer_size=512M --read_buffer_size=4M --write_buffer_size=4M /var/lib/mysql/DB1/*.MYI |
用myisamchk 获取table资讯
代码如下 | 复制代码 |
#myisamchk -dvv profiles.MYI table description: Field Start Length Nullpos Nullbit Type |