mysqldailybackup.sh
#!/bin/sh # Name:mysqlDailyBackup.sh # 定义数据库目录和数据目录 mysqldir=/usr/local/mysql datadir=$mysqldir/data # 定义用于备份数据库的用户名和密码 user=root userpwd=123456 # 定义备份目录,每日备份文件备份到$dataBackupDir/daily databackupdir=/opt/mysqlbackup dailybackupdir=$databackupdir/daily [ ! -d $dailybackupdir ] && mkdir -p $databackupdir/daily # 定义邮件正文文件 emailfile=$databackupdir/email.txt # 定义邮件地址 email=root@localhost.localdomain # 定义日志文件 logfile=$databackupdir/mysqlbackup.log echo "" > $emailfile echo $(date +"%y-%m-%d %H:%M:%S") >> $emailfile # # 刷新日志,使数据库使用新的二进制日志文件 $mysqldir/bin/mysqladmin -u$user -p$userpwd flush-logs cd $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 ]; then echo "Skip exist $binlogname!" > /dev/null else # 备份日志文件到备份目录 cp $binlogname $dailybackupdir if [ $? -eq 0 ]; then ifile=`expr $ifile + 1` echo "$binlogname backup success!" >> $emailfile fi fi fi done if [ $ifile -eq 0 ];then echo "No Binlog Backup!" >> $emailfile else echo "Backup $ifile File(s)." >> $emailfile echo "Backup MySQL Binlog OK!" >> $emailfile fi # 发送邮件通知 cat $emailfile | mail -s "MySQL Backup" $email # 写日志文件 echo "--------------------------------------------------------" >> $logfile cat $emailfile >> $logfile
mysql完整备份脚本:
#!/bin/sh # Name:mysqlFullBackup.sh # 定义数据库目录 mysqlDir=/usr/local/mysql # 定义用于备份数据库的用户名和密码 user=root userpwd=123456 dbname=test_db # 定义备份目录 databackupdir=/opt/mysqlbackup [ ! -d $databackupdir ] && mkdir $databackupdir # 定义邮件正文文件 emailfile=$databackupdir/email.txt # 定义邮件地址 email=root@localhost.localdomain # 定义备份日志文件 logfile=$databackupdir/mysqlbackup.log DATE=`date -I` echo "" > $emailfile echo $(date +"%y-%m-%d %H:%M:%S") >> $emailfile cd $databackupdir # 定义备份文件名 dumpfile=mysql_$DATE.sql gzdumpfile=mysql_$DATE.sql.tar.gz # 使用mysqldump备份数据库,请根据具体情况设置参数 $mysqlDir/bin/mysqldump -u$user -p$userpwd --flush-logs -x $dbname > $dumpfile # 压缩备份文件 if [ $? -eq 0 ]; then tar czf $gzdumpfile $dumpfile >> $emailfile 2>&1 echo "BackupFileName:$gzdumpfile" >> $emailfile echo "DataBase Backup Success!" >> $emailfile rm -f $dumpfile else echo "DataBase Backup Fail!" >> $emailfile fi # 写日志文件 echo "--------------------------------------------------------" >> $logfile cat $emailfile >> $logfile # 发送邮件通知 cat $emailfile | mail -s "MySQL Backup" $email
本文出自 “清风与你” 博客,谢绝转载!
原文:http://super12138.blog.51cto.com/12190541/1916437