对MYISAM表的压缩,可以使用myisampack和myisamchk完成(myisampack完之后必须进行myisamchk才能使用压缩后的表,而且是只读的), 其详细地用法可以参考官方文档: http://dev.mysql.com/doc/refman/5.1/zh/client-side-scripts.html。
下面是用于实现某数据库下表压缩的shell过程(值得注意的是,如果数据量大,建议分多次操作,因其会很耗时):
02 |
data_dir= "/data/mysql/my_dbname/" |
03 |
filelist=` ls $data_dir` |
04 |
echo "MYISAMPACK BEGIN." |
05 |
for filename in $filelist |
07 |
idx=` expr match "$filename" ".*.MYI" ` |
10 |
/usr/bin/myisampack $data_dir$filename |
14 |
echo "MYISAMPACK End. MYISAMCHK BEGIN." |
16 |
for filename in $filelist |
18 |
idx=` expr match "$filename" ".*.MYI" ` |
21 |
/usr/bin/myisamchk -r -o -f -- sort -index --analyze $data_dir$filename |
这两个操作需要谨慎使用,在压缩之前需要确认mysqld已关闭或者要压缩的表不会有其他的sql操作;而且压缩过程会很占用cpu资源,建议在服务器空闲的状态进行。
(责任编辑:IT) |