Mysql定時備份數據腳本


項目集群搭建完成,數據庫雖有做主從同步,但考慮到數據安全性,為了滿足這個需求那么要每天對數據備份處理,

但每天手動進行備份處理太過於被動,而且白天用戶訪問,會有數據變化以及在備份時會影響服務器正常運行的性能,

所以考慮寫一個腳本,並制定一個定時任務進行執行腳本備份數據;

#!/bin/bash
###數據庫定時備份,並將備份的庫進行打包壓縮
user=root
passwd=123456
back_path=/vdb1/mysql/backup
data_name=zmq123
date=`date +%Y%m%d`

mkdir $back_path/$date
mysqldump -u $user -p$passwd $data_name |gzip > $back_path/$date/$data_name.sql.gz

#定時任務,計划在每天晚上23點55分進行數據備份
55 23   *  *  * . /vdb1/mysql/mysqldump.sh

當運行了一段時間后,發現備份的數據有些占磁盤空間的,而我要保存的只是最近一月的數據就可以了,所以將這個腳本進行升級,

在可能沒有人注意的情況下,而磁盤不會被備份數據占滿;

###升級版每天晚上11:55分進行定時備份,
#!/bin/bash
year=`date +%Y`
month=`date +%m`
day=`date +%d`
backpath=/vdb1/mysql/backup/$year$month/
user=root
passwd=123456
dataname=zmq123

[ -d $backpath ] || mkdir -p $backpath
rq=`date +%Y%m%d`
mysqldump -u $user -p$passwd $dataname|gzip >$backpath/$rq.sql.gz

#定時任務
分 時   日 月 周
55 23   *  *  * . /vdb1/mysql/mysqldump.sh

########每月2號晚上11:30進行定時刪除上個月備份數據
#!/bin/bash
year=`date +%Y`
month=`date +%m`
month=`expr $month - 1`
 if [ $month -eq 0 ];then
    month=12
    day=31
    year=`expr $year - 1`
 fi

 if [ $month -lt 10 ];then
    pre=0
 fi

backdir=/vdb1/mysql/backup/$year$pre$month
rm -rf $backdir                    #刪除上一個月的數據
##定時任務
30 23  2 * * . /vdb1/mysql/delmysqlbak.sh

OK!編寫完成,先運行段時間看下吧!有情況再進行改進;


免責聲明!

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



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