天天看點

linux下mysql資料庫備份方法_Linux下mysql資料庫備份方法

#!/bin/bash

#Mysql autobackup shell#write by tuspark.cn

#-------------------資料庫相關的使用者名、密碼、需要備份的資料庫名、備份目錄等

dbuser=root

dbpasswd=XXXXX

dbserver=localhost

dbname=XXXXX

dbopt=--opt

backupdir=/dcbackup/

#-------------------是否開啟FTP遠端備份,0為否,1為是。

copytoftp=1

ftpserver=XXXXX

ftpuser=XXXXX

ftppasswd=XXXXX

#-------------------以下參數

fileprefix=dcradiusdump

filename=$backupdir`date +%F`.sql

newfile=$fileprefix-`date +%F`.tar.gz

keepdays=10

#-------------------以下為備份時的日志

logfile=/var/log/mysqlbackup.log

logtmp=/var/log/mybackup.tmp

#===============================================

if [ ! -d $backupdir ]

then

echo "$backupdir is not exist, then make ..." >> $logfile

mkdir -p $backupdir

fi

echo "start====================================>">>$logfile

echo "Beginning backup `date '+%F %T'`" >>$logfile

echo "Delete $keepdays days ago files ..." >>$logfile

find $backupdir -name $fileprefix* -mtime +$keepdays -fls $logtmp -exec rm {} ;

echo "Deleted Backup file is :">>$logfile

cat $logtmp >>$logfile

echo "Delete old file Success!" >>$logfile

if [ -f $backupdir$newfile ]

then

echo "$newfile backup exist, backup stop ..." >>$logfile

else

if [ -z $dbpasswd ]

then

mysqldump -u$dbuser -h$dbserver $dbopt $dbname >$dumpfilename

else

mysqldump -u$dbuser -p$dbpasswd -h$dbserver $dbopt $dbname >$dumpfilename

fi

tar czvf $backupdir$newfile $dumpfilename >>$logfile 2>&1

echo "$backupdir$newfile Backup Success!" >>$logfile

rm -fr $dumpfilename

if [ $copytoftp = 1 ]; then

if [ -z $ftpserver ];then

echo "Ftp Server not set,Copy to Ftp Failed ..." >>$logfile

exit 1

elif [ -z $ftpuser ];then

echo "Ftp user not set, Copy to Ftp Failed ..." >>$logfile

exit 2

elif [ -z $ftppasswd ]; then

echo "Ftp password not set, Copy to Ftp Failed ..." >>$logfile

exit 3

else

echo "Start copy to Ftp server ...." >> $logfile

ftp -n>$logfile

fi