在一般的建站或者项目环境中,备份是一个很重要的东西。正所谓数据是一个站长的命根子,手握备份才能无惧任何突发状况。其中当属SQL备份最为关键。当然SQL备份的办法多种多样,但使用mysqldump这个官方提供的工具来实行全量导出算是一个比较稳妥的办法之一。

今天我要介绍的这种方法就是一种常见的mysql备份方案。当然你也可以与其他备份方法一同使用。

首先我们需要在系统中安装Crontab。crontab是一个linux上常见的定时计划任务工具,是一个linux上运维最常用的运维工具。基本上绝大多数的VPS或者服务器Linux系统中都默认安装了corn。如果碰上没有安装过的,可以使用下面的命令安装。

Centos:

yum install -y vixie-cron

Debian/Ubuntu:

apt-get install cron

当然,在第一次使用cron的时候会让你选择编辑器。如果我选错编辑器了该怎么办?用以下命令还能反悔:

select-editor


首先我们需要建立新建一个shell脚本。我们可以在root目录下用vim编辑器新建一个。

vim /root/mysqldump.sh

接着我们可以把以下内容稍微修改一下,贴进去。

#!/bin/sh 
DUMP=/usr/bin/mysqldump #这个是mysqldump的位置,一般默认都安装在这,如有其他位置需要修改
OUT_DIR=/home/sqlbackup #这个是我们保存sql备份文件的文件夹,按需修改
LINUX_USER=root #这个是要使用的Linux用户,一般我们都用最高权限root帐号来备份
DB_NAME=vpstry #这个是要备份的数据表,按需修改
DB_USER=root #这个是我们要使用的SQL用户,一般我们都使用root最高权限来进行备份
DB_PASS=123456 #这个是SQL帐号的密码
DAYS=15 #这个是文件保存的最长时间,超过这个时间的文件都会被清除
cd $OUT_DIR 
DATE=`date +%Y%m%d%H%M`
OUT_SQL=$DATE.sql
TAR_SQL="bak_$DATE.tar.gz" #这个是备份文件用的名字
$DUMP -u$DB_USER -p$DB_PASS $DB_NAME --default-character-set=utf8 --opt -Q -R --skip-lock-tables>$OUT_SQL
tar -czf $TAR_SQL ./$OUT_SQL
rm $OUT_SQL
chown $LINUX_USER:$LINUX_USER $OUT_DIR/$TAR_SQL
find $OUT_DIR -name "bak*" -type f -mtime +$DAYS -exec rm {} \; #这里的bak要与上面用的名字对应,不然无法清除超过15天的备份文件

这样我们就写好了一个shell脚本,在使用之前我们还得先确认被蜂拥的文件夹建立了没有。

用下面的这条命令建立备份文件夹/sqlbackup:

mkdir /home/sqlbackup

接下来我们要修改mysqldump.sh的权限:

chmod +x /root/mysqldump.sh

接下来我们要把脚本执行添加进crontab中让他定时执行。

crontab -e

假如我们要在每天凌晨2点30的时候定时备份mysql,那我们要在最下面添加一条这样的任务:

30 02 * * * /root/mysqldump.sh

这里的30 02是时间,意思就是凌晨2点30分的时候执行这个脚本。我们可以根据需要修改。

当然,到这里我们就部署完毕了。不过我们也是可以先测试下脚本能不能使用:

./root/mysqldump.sh

bash /root/mysqldump.sh