生产环境中Mysql数据库的备份是周期性重复的操作,所以通常是要编写脚本实现,通过crond计划任务周期性执行备份脚本
mysqldump备份方案:
周日凌晨1点全库备份
周一到周六凌晨每隔4个小时增量备份一次
设置crontab任务,每天执行备份脚本
0 1 * * 0 /root/mysqlfullbackup.sh >/dev/null 2>&1
0 /4 * 1-6 /root/mysqldailybackup.sh >/dev/null 2>&1
mysqlfullbackup.sh脚本内容:
[root@localhost ~]# cat mysqlfullbackup.sh
mysqlDir=/usr/local/mysql
user=root
userpwd=123456
dbname=test_db
databackupdir=/opt/mysqlbackup
[ ! -d databackupdir ]&& mkdirdatabackupdir
emailfile=$databackupdir/email.txt
logfile=$databackupdir/mysqlbackup.log
DATE=date -I
echo “” > emailfileecho (date +"%y-%m-%d %H:%M:%S") >> emailfilecd databackupdir
dumpfile=mysql_DATE.sql
gzdumpfile=mysql_DATE.sql.tar.gz
mysqlDir/bin/mysqldump−u user -p userpwd−−flush−logs−x dbname > $dumpfile
if [ ?−eq0];thentarczf gzdumpfile dumpfile>> emailfile 2>&1
echo “BackupFileName: gzdumpfile">> emailfile
echo “DataBase Backup Success!” >> emailfilerm−f dumpfile
else
echo “DataBase Backup Fail!” >> $emailfile
fi
echo “——————————————————–” >> logfilecat emailfile >> $logfile
cat emailfile|mail−s"MySQLBackup" email
mysqldailybackup.sh脚本内容:
[root@localhost ~]# cat mysqldailybackup.sh
mysqldir=/usr/local/mysql
datadir=$mysqldir/data
user=root
userpwd=123456
databackupdir=/opt/mysqlbackup
dailybackupdir= databackupdir/daily[!−d dailybackupdir ]&& mkdir -p $databackupdir/daily
emailfile=$databackupdir/email.txt
logfile= databackupdir/mysqlbackup.logecho“”> emailfile
echo (date+" emailfile
#
mysqldir/bin/mysqladmin−u user -p userpwdflush−logscd datadir
filelist=cat mysql-bin.index
icounter=0
for file in $filelist
do
icounter=expr $icounter + 1
done
nextnum=0
ifile=0
for file in $filelist
do
binlogname=basename $file
nextnum=expr $nextnum + 1
if [ nextnum−eq icounter ]; then
echo “Skip lastest!” > /dev/null
else
dest= dailybackupdir/ binlogname
if [ -e dest];thenecho“Skipexist binlogname!” > /dev/null
else
cp binlogname dailybackupdir
if [ $? -eq 0 ]; then
ifile=expr $ifile + 1
echo “ binlognamebackupsuccess!">> emailfile
fi
fi
fi
done
if [ ifile−eq0];thenecho“NoBinlogBackup!”>> emailfile
else
echo “Backup ifileFile(s).">> emailfile
echo “Backup MySQL Binlog OK!” >> $emailfile
fi
cat emailfile|mail−s"MySQLBackup" email
echo “——————————————————–” >> logfilecat emailfile >> $logfile
chmod +x