### **增量備份**
binlogbak.sh
```
#!/bin/bash
export LANG=en_US.UTF-8
BIN_DIR="/usr/bin"
BakDir=/dbbackup/mysql/daily
BinDir=/var/log/bs/mysql/logbin
LogFile=/dbbackup/mysql/daily/binlog.log
BinFile=/var/log/bs/mysql/logbin/logbin.index
echo `date +"%Y%m%d %H:%M:%S"` add backup start ! >> $LogFile
$BIN_DIR/mysqladmin -uroot -pds@Admin123 flush-logs
echo "flush-logs binlog file such" >> $LogFile
#這個是用于產生新的mysql-bin.00000*文件
Counter=`wc -l $BinFile |awk '{print $1}'`
NextNum=0
#這個for循環用于比對$Counter,$NextNum這兩個值來確定文件是不是存在或最新的。
for file in `cat $BinFile`
do
base=`basename $file`
NextNum=`expr $NextNum + 1`
if [ $NextNum -eq $Counter ]
then
echo $base current flush-logs file no backup >> $LogFile
else
dest=$BakDir/$base
if ( test -e $dest )
then
echo $base have backup >> $LogFile
else
cp $BinDir/$base $BakDir
echo $base backup.. >> $LogFile
fi
fi
done
echo `date +"%Y%m%d %H:%M:%S"` add file backup succ ! >> $LogFile
echo `` >> $LogFile
echo `` >> $LogFile
```
### 全量備份
healthbak.sh
```
#!/bin/bash
export LANG=en_US.UTF-8
source /usr/local/sh/binlogbak.sh
BIN_DIR="/usr/bin"
BakDir=/dbbackup/mysql/health
AddBakDir=/dbbackup/mysql/daily
LogFile=/dbbackup/mysql/health/health_bak.log
Date=`date +%Y%m%d_%H%M%S`
Begin=`date +"%Y%m%d %H:%M:%S"`
DB_NAME="health"
DB_USER="root"
DB_PASS="ds@Admin123"
cd $BakDir
DumpFile="/dbbackup/mysql/health/data_"$Date.sql
GZDumpFile="/dbbackup/mysql/health/data_"$Date.sql.tgz
$BIN_DIR/mysqldump -u$DB_USER -p$DB_PASS $DB_NAME --flush-logs --delete-master-logs --single-transaction > $DumpFile
tar -czPf $GZDumpFile $DumpFile
rm $DumpFile
count=$(ls -l *.tgz |wc -l)
if [ $count -ge 5 ]
then
file=$(ls -l *.tgz |awk '{print $9}'|awk 'NR==1')
rm -f $file
fi
#save history number 4
Last=`date +"%Y%m%d %H:%M:%S"`
echo start:$Begin end:$Last $GZDumpFile full backup succ >> $LogFile
mkdir daily_$Date
cp -rf $AddBakDir $BakDir/daily_$Date
echo `date +%Y%m%d_%H%M%S` copy previous add backup >> $LogFile
cd $AddBakDir
rm -f *
echo `date +%Y%m%d_%H%M%S` delete previous add backup >> $LogFile
cd $BakDir
nums=$(find -name daily_\* -type d|wc -l)
if [ $nums -ge 5 ]
then
file1=$(find -name daily_\* -type d|sort|awk '{print $1}'|awk 'NR==1')
file2=`basename $file1`
rm -rf $file2
fi
echo `date +%Y%m%d_%H%M%S` save 4 quartic add backup >> $LogFile
echo `` >> $LogFile
echo `` >> $LogFile
```