mysql增量備份腳本


#!/bin/sh
###############################
# 此腳本用來增量備份
# 此文件名:mysqldailybackup.sh
#
# Author: zhangrox
# mail: hienha@163.com
# create: 2013/06/29
#
# 每個星期一到六早上3點做一次增量備份(加 & 為后台執行)
# 0 3 * * 1-6 root /backup/mysql/daily_backup/mysqldailybackup.sh &
#
# 不使用mysqlbinlog來做增量備份的原因:mysql啟動后會產生mysql-bin這樣的文件,每啟動一次,就會增加一個或者多個。
###############################

#設置用戶名和密碼
mysql_user="root"
mysql_password=""

#mysql安裝全路徑
mysql_dir=/usr/local/mysql/bin

#備份數據庫(多數據庫,用逗號隔開)
mysql_databases="quanfan"

#設置備份路徑,創建備份文件夾
backup_dir=/backup/mysql
full_backup_dir=$backup_dir/daily_backup

#備份的時間
today=$(date +%Y%m%d_%H%M%S)

#備份日志文件
log_file=daily_backup.log

#只保留最近10個星期的備份(其他刪除)
time=$(date "-d 70 day ago" +%Y-%m-%d %H:%M:%S)

#開始備份,記錄備份開始時間 並壓縮備份文件
echo -e '['$(date +"%Y-%m-%d %H:%M:%S")'] - '$mysql_databases' - '"備份開始\n" >> $backup_dir/$log_file

#判斷目標目錄是否已經存在
if [! -d $full_backup_dir] then
    mkdir -p $full_backup_dir
fi

echo -e '['$(date +"%Y-%m-%d %H:%M:%S")'] - '$mysql_databases' - '"備份並壓縮備份文件\n" >> $backup_dir/$log_file

#備份INNODB 使用下面代碼 並壓縮備份文件
$mysql_dir/mysqldump -u$mysql_user -p$mysql_password --apply-slave-statements --master-data=2 --single-transaction --flush-logs --databases $mysql_databases | gzip > $full_backup_dir/$today.sql.gz

#備份MyISAM 使用下面代碼
#$mysql_dir/mysqldump -u$mysql_user -p$mysql_password --apply-slave-statements --master-data=2 --lock-all-tables --flush-logs  --databases $mysql_databases | gzip > $full_backup_dir/$today.sql.gz

#找出70天前備份的文件,然后刪除
echo -e '['$(date +"%Y-%m-%d %H:%M:%S")'] - '$mysql_databases' - '"刪除10星期前的備份\n" >> $backup_dir/$log_file
for file in `find -not -type d -mtime +70`
do
    rm -rf $file
done


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM