当前位置: > 数据库 > MySQL >

利用Shell脚本自动执行MYISAM表批量压缩

时间:2015-09-20 23:32来源:linux.it.net.cn 作者:IT

对MYISAM表的压缩,可以使用myisampack和myisamchk完成(myisampack完之后必须进行myisamchk才能使用压缩后的表,而且是只读的), 其详细地用法可以参考官方文档: http://dev.mysql.com/doc/refman/5.1/zh/client-side-scripts.html。

 

下面是用于实现某数据库下表压缩的shell过程(值得注意的是,如果数据量大,建议分多次操作,因其会很耗时):

 

view source
 
print?
01 #!/bin/bash
02 data_dir="/data/mysql/my_dbname/"
03 filelist=`ls $data_dir`
04 echo "MYISAMPACK BEGIN."
05 for filename in $filelist
06 do
07     idx=`expr match "$filename" ".*.MYI"`
08     if [[ $idx>0 ]]
09     then
10         /usr/bin/myisampack $data_dir$filename
11     fi
12 done
13  
14 echo "MYISAMPACK End. MYISAMCHK BEGIN."
15  
16 for filename in $filelist
17 do
18     idx=`expr match "$filename" ".*.MYI"`
19     if [[ $idx>0 ]]
20     then
21         /usr/bin/myisamchk -r -o -f --sort-index --analyze $data_dir$filename
22     fi
23 done
24 echo "MYISAMCHK END."

这两个操作需要谨慎使用,在压缩之前需要确认mysqld已关闭或者要压缩的表不会有其他的sql操作;而且压缩过程会很占用cpu资源,建议在服务器空闲的状态进行。




(责任编辑:IT)
------分隔线----------------------------
栏目列表
推荐内容