需求:网站服务器为centos,用lnmp一键包搭建,由于访问量较大,记录访问者信息的一个mysql表每天会生成100M左右的数据,时间长了备份起来比较麻烦。
目标:每天0点自动备份前一天数据为一个sql文件,再使用7z压缩后保存。
操作步骤:
1、安装p7zip:由于源里面没有此包,直接下载源码安装。
地址:http://p7zip.sourceforge.net/
wget http://sourceforge.net/projects/p7zip/files/p7zip/9.20.1/p7zip_9.20.1_src_all.tar.bz2 tar xvf p7zip_9.20.1_src_all.tar.bz2 cd p7zip_9.20.1_src_all make && make install
2、备份脚本(back.sh):
#!/bin/sh filename="/home/www/data/"`date -d last-day +%Y%m%d` viewdate=`date -d last-day +%Y-%m-%d` mysqlcheck -uuser -ppassword database mysqldump -uuser -ppassword --compact database table --where "datafield like '$viewdate%'" > $filename".sql" sed -i 's/CREATE TABLE/& IF NOT EXISTS/' $filename".sql" /usr/local/bin/7za a $filename".7z" $filename".sql" rm $filename".sql"
3、用cron实现每天0点自动备份
crontab -e
添加:
00 00 * * * /home/www/data/bash.sh > /dev/null 2>&1
通过这种方法,每天生成的100M数据表,压缩后为7M多。再次感叹7z的超强压缩能力!
另,导入如此备份的sql文件到数据库的命令:
mysql -uuser -ppassword database < "20130319.sql"
有用,不赖。。是你自己写的脚步? 牛呀。。
晕,后来才发现网上有许多现成的。。。白费劲了