#!/bin/bash #this is a shellscript for auto db backup #put this into the crontab schedule then it will work # #author: Cao Haitao #2007-04-30 #settings #set the datebase name,database login name,password,backup files' dir,backup log files' dir #database name to backup dbname=mydb #database username to login dbuser=root #password to login dbpasswd= #mysqldump's path mysqldump=/usr/local/mysql/bin/mysqldump #logfile logfile=/home/caohaitao/dbbakup/baklog.log #backup files' dir backupdir=/home/caohaitao/dbbakup/bakupfiles/ newfile="$backupdir"mydb.$(date +%Y-%m-%d).sql oldfile="$backupdir"mydb.$(date +%Y-%m-%d --date='7 days ago').sql #delete ole file if [ -f $oldfile ] then rm -f $oldfile echo "[$oldfile] delete ole file success!" >> $logfile else echo "[$oldfile] no old backup file." >>$logfile fi if [ -f $newfile ] then echo "[$newfile] the backup file is already exist." >> $logfile else if [ -z $dbpasswd ] then $mysqldump -u $dbuser --opt $dbname > $newfile else $mysqldump -u $dbuser -p$dbpasswd --opt $dbname > $newfile fi echo "[$newfile] create new file success." >> $logfile fi 这是一个linux下mysql利用mysqldump自动备份数据库的脚本,保存7天的数据文件,7天之前的自动删除,把这个脚本放到crontab的schedule中就行了。 注意就是脚本中的mysqldump要使用绝对路径,要不然你的crontab可能没有办法找到这个环境变量,从而导致的结果是生成的文件为空,文件大小0字节。 |