一段自动备份mysql数据表的脚本

需求:网站服务器为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"

一段自动备份mysql数据表的脚本》有2个想法

发表评论

电子邮件地址不会被公开。

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据