mysql 全量与增量交替备份

1:mysql开启log_bin功能
vim /etc/my.cnf
log-bin=/data/mysql/datamysql

#!/usr/bin/bash
#define:MySQL full backup and incremental backup
#date:2017.02.09
#author:sql

basename="/data/scripts/mysql_back"
mysql_bak_dir="/data/mysql_bak"
get_log_dir="/data/mysql/data"
today=`date +"%Y%m%d"`数据库

###数据库信息
mysql_ip="127.0.0.1"
mysql_user="root"
mysql_passwd="root"
mysql_path="/bin"vim

logdir="/data/log/mysql"          #日志路径
log=$logdir/log"$today".log                            #日志文件 
is_font=1                                      #终端是否打印日志: 1打印 0不打印 
is_log=1                                       #是否记录日志: 1记录 0不记录
[[ -d $logdir ]]||mkdir -p $logdir             #确保日志目录存在bash


datef(){
    date "+%Y-%m-%d %H:%M:%S"
}日志

print_log(){
    if [[ $is_log -eq 1  ]];then
        [[ -d $logdir ]] || mkdir -p $logdir
        echo -e "[ $(datef) ] $1" >> $log
    fi
    if [[ $is_font -eq 1  ]];then
        echo -e "[ $(datef) ] $1"
    fi
}ip


####日期判断
Date=`date|awk '{print $1}'`rem

full_bakck() {
    print_log "mysql 全量备份"
    print_log "获取当前最新binlog"
    log_bin_name=`ls -lt $get_log_dir/log.*|head -n 1|awk '{print $9}'`
    while true
    do
        $mysql_path/mysqldump -h $mysql_ip -u$mysql_user -p$mysql_passwd  --single-transaction --all-databases --flush-logs > $mysql_bak_dir/backup_sunday_1_PM"$today".sql
        if [[ $? -eq 0 ]];then
            print_log "mysql全量备份成功,备份名:backup_sunday_1_PM"$today".sql,二进制日志:$log_bin_name" get

                    break
        fi
    done
}io

incremental_back() {
    print_log "mysql 增量备份"
    log_bin_name=`ls -lt $get_log_dir/log.*|head -n 1|awk '{print $9}'`
    $mysql_path/mysqladmin -h $mysql_ip -u$mysql_user -p$mysql_passwd  flush-logs
    print_log "mysql 增量备份成功,二进制日志:$log_bin_name"
}

case $Date in  Sun)     full_bakck     ;; Mon|Tue|Wed|Thu|Fri|Sat)     incremental_back     ;; *)     echo "Usage 获取的日期格式有问题,请检查"     ;; esac