Polarisbancage

Navigation

82days since
最爱的banban生日

173days since
Me

MySQL‎ > ‎

使用mysql的mysqldump实现自动备份

#!/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字节。