文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>使用fusecompress压缩文件系统缩小mysql数据库的空间

使用fusecompress压缩文件系统缩小mysql数据库的空间

时间:2010-04-05  来源:osdba

我们有一个做监控的mysql数据库,主要放一些10秒采集一次的一些数据库性能数据,由于是每10秒采集一次数据,所以数据量比较大,保留3个月的数据时,数据库的大小就达到了17G,目前需要采集性能数据的数据库还不多,只有20几个,如果今后数据库增长,或采集项增多,那么本地硬盘就放不下了。由于采集来的数据是直接插入到mysql的一张分区表中,每天分一个区,所以对性能要求不是很高,而对空间的要求就比较大。为此,准备使用fusecompress压缩文件系统存储这些数据,这样可以大大的降低数据空间的要求。 我的操作系统环境是Rhel5.3, 操作步骤如下:   我使用的是FuseCompress0.91的版本,使用这个文件系统需要先安装fuse模块: 在redhat下安装以下包:
fuse-2.7.3glfs10-1
kernel-module-fuse-2.6.18-93.el5.custom-2.7.3glfs10-1
fuse-devel-2.7.3glfs10-1
fuse-libs-2.7.3glfs10-1
我是直接使用yum安装的。 下载fusecompress文件系统: FuseCompress
http://miio.net/fusecompress/
http://code.google.com/p/fusecompress/
 
把fusecompress.tar.gz解压到/usr/src/fusecompress目录下就可以了: cd /usr/src/fusecompress make make install 安装完后,fusecompress会安装到/usr/local/sbin/目录下: #ls -l /usr/local/bin/fuse*
-rwxr-xr-x 1 root root 124058 Apr  4 15:47 /usr/local/bin/fusecompress
-rwxr-xr-x 1 root root  42624 Apr  4 15:47 /usr/local/bin/fusecompress_offline
-rwsr-xr-x 1 root root  66552 Apr  3 16:57 /usr/local/bin/fusermount
fusecompress使用比较简单: 如果想对/data/mysqldata/mydb目录做压缩,只需要执行: fusecompress /data/mysqldata/mydb 然后用df -h就可以看到mount上的文件系统: #df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda3             4.8G  415M  4.1G  10% /
/dev/sda10             32G   24G  6.8G  78% /data
/dev/sda2             9.5G  4.0G  5.0G  45% /usr
/dev/sda9             9.5G  367M  8.7G   4% /var
/dev/sda8             9.5G  151M  8.9G   2% /tmp
/dev/sda7              19G  9.9G  8.2G  55% /home
/dev/sda1              99M   12M   83M  13% /boot
tmpfs                 3.9G     0  3.9G   0% /dev/shm
fuse                   29G   20G  7.2G  74% /data/mysqldata/mydb
  这个目录下现有的文件不会被压缩,但以后再放到这个目录下的文件就会被压缩。 如果想把这个目录下现的文件压缩,可以采用这个办法: 先把表文件拷贝一份,新生成的文件就是压缩的了,然后再把旧文件删除,把新文件改成旧文件名。 我的这个数据库的使用的是myisam引擎,对于一些历史表,数据库不会再写的,拷贝文件时是可以在线操作的: cp dbstats#P#p20100201.MYD dbstats#P#p20100201.MYD.new cp dbstats#P#p20100201.MYI dbstats#P#p20100201.MYI.new ..... 等拷贝完这些文件后,把mysql数据库停一下,然后马上对文件进行改名: mv dbstats#P#p20100201.MYD dbstats#P#p20100201.MYD.old mv dbstats#P#p20100201.MYI dbstats#P#p20100201.MYI.old mv dbstats#P#p20100201.MYD.new dbstats#P#p20100201.MYD mv dbstats#P#p20100201.MYI.new dbstats#P#p20100201.MYI ....   然后再重启数据库,这样数据库的停机时间估计可以在几分钟内完成。   fusecompress的使用方法如下:
Usage: fusecompress [OPTIONS] /storage/directory [/mount/point]
        -h                   print this help
        -v                   print version
        -c gz/null   choose default compression method
        -l LEVEL             set compression level (1 to 9)
        -o ...               pass arguments to fuse library
  一般主要使用-l参数指定压缩率,数据越大压缩率越高,但性能越差。   同时fusecompress也提供了一个离线压缩、解压的工具: Usage: fusecompress_offline [OPTIONS] [path...]  -c lzo/gz/bz2/lzma/null        Compress file using the given method
 -l LEVEL               Specifies compression level
  注意:如果使用了fusecompress挂载了一个文件系统,以后一定不要忘记机器每次启动后重新挂载这个文件系统,否则mysql启动后会报这些文件坏,因为文件名虽然是一样的,实际上内容已经变成压缩的了,与原来文件的内容已经不一样了。
相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载