Mysql定時備份資料指令碼
阿新 • • 發佈:2018-12-07
專案叢集搭建完成,資料庫雖有做主從同步,但考慮到資料安全性,為了滿足這個需求那麼要每天對資料備份處理,
但每天手動進行備份處理太過於被動,而且白天使用者訪問,會有資料變化以及在備份時會影響伺服器正常執行的效能,
所以考慮寫一個指令碼,並制定一個定時任務進行執行指令碼備份資料;
#!/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