使用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启动后会报这些文件坏,因为文件名虽然是一样的,实际上内容已经变成压缩的了,与原来文件的内容已经不一样了。
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启动后会报这些文件坏,因为文件名虽然是一样的,实际上内容已经变成压缩的了,与原来文件的内容已经不一样了。
相关阅读 更多 +