Mysq binlog日誌備份腳本

#!/bin/bash

dateDIR=$(date -d "yesterday" +"%y-%m-%d")
mkdir -p /data/backup/mysql/binlog/$dateDIR

##刷新緩存中的日誌
mysqladmin -uroot -p123456 flush-logs

#7天前的時間
TIME=$(date "-d 7 day ago" +"%Y-%m-%d %H:%M:%S")

#24小時前的時間
StartTime=$(date "-d 1 day ago" +"%Y-%m-%d %H:%M:%S")

#刪除7天前的2進制文件
mysql -uroot -p123456 -e "purge master logs before '${TIME}';"

#針對每個數據庫
for db in $(mysql -uroot -p123456 -e "show databases" | grep -ve "Database" -ve "mysql" -ve "test" -ve "information_schema")
do
#針對所有的日誌文件
for log in $(cat /data/mysql/3306/logs/binlog/mysql-bin.index)
do
#備份每個數據庫24小時之前到現在時間的所有日誌,寫入到相應文件中
mysqlbinlog -uroot -p123456 -d $db --start-datetime="$StartTime" ${log}>>/data/backup/mysql/binlog/$dateDIR/${db}_${dateDIR}
done
tar jcvf /data/backup/mysql/binlog/$dateDIR/${db}_${dateDIR}.tar.bz2 /data/backup/mysql/binlog/$dateDIR/${db}_${dateDIR} 2&>/dev/null
rm -rf /data/backup/mysql/binlog/$dateDIR/${db}_${dateDIR}
done
#刪除30天以前的增量備份文件和目錄
find /data/backup/mysql/binlog/* -mtime +29 -type d -exec rm -rf {} \;

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章