#!/bin/bash #mysql熱備腳本 #備份策略:每周一進行完整備份,以後每一天在前一天的基礎上進行增量備份 # #備份目錄 back_dir="/data/backup/mysql" #備份資料庫信息 host="" dbuser="" dbpasswd="" #日誌文件 back_log... ...
#!/bin/bash #mysql熱備腳本 #備份策略:每周一進行完整備份,以後每一天在前一天的基礎上進行增量備份 # #備份目錄 back_dir="/data/backup/mysql" #備份資料庫信息 host="" dbuser="" dbpasswd="" #日誌文件 back_log="${back_dir}/log/mysql_back.log" #week day week_day=`date +%w` #yesterday yesterday=`date +%F -d "1 days ago"` #日誌記錄函數 function log(){ echo "`date` $1" | tee -a ${back_log} } #判斷當前日期,是周一進行全備份,其他時間進行增量備份 if [ ${week_day} -eq 1 ]; then #完整備份 log "周${week_day}開始完全備份..." innobackupex --defaults-file=/etc/my.cnf --host=${host} --user=${dbuser} --password=${dbpasswd} ${back_dir} &>> ${back_log} if [ $? -eq 0 ]; then log "完全備份完畢." else log "完全備份出錯,請檢查." exit 1 fi else let dir_num=`find ${back_dir} -type d -name "${yesterday}*" | wc -l` if [ ${dir_num} -ne 1 ]; then log "昨天增量目錄未找到或昨天備份目錄大於等於2個,請確認後再次備份." exit 1 fi incremental_dir=`find ${back_dir} -type d -name "${yesterday}*"` log "周${week_day}開始增量備份..." #增量備份 innobackupex --host=${host} --user=${dbuser} --password=${dbpasswd} --incremental ${back_dir} --incremental-basedir=${incremental_dir} &>> ${back_log} if [ $? -eq 0 ]; then log "增量備份成功." else log "備份失敗,請檢查日誌..." exit 1 fi fi exit $?