您好,登錄后才能下訂單哦!
公司有三臺sql server數據庫,每天通過sql server計劃任務備份數據到本地,再通過本地上傳到數據服務器上做保存,如此反復,有時因為工作忙,忘了上傳,導致數據被替換而沒有備份的現象。
經過對Linux學習,發現這一切都只是小問題,不需要這么麻煩,如是說干就干。
通過查資料,sql server是可以通過遠程方式備份的,如果配置好sql server的遠程備份功能,將數據每天備份到指定的數據存儲服務器上
將數據備份服務器從windows 7改裝成centos 6.5
現在問題是sql server每天傳過來的數據庫文件是相同文件名的,是會將原有備份替換的,這樣就保存不了多天的數據了,如是我想利用腳本的方式實現當數據庫備份文件傳過來后,我就在當前目錄創建一個日期文件夾,然后將數據庫文件自動移動到該文件夾中,這樣下次備份的時候,就不會替換了,如果循環
為了防止磁盤空間不足,我在腳本中加入find,查找到大于30天的數據就清除,(find ./ -type f -mtime +30 -name "*.bak" | xargs rm -f)只保留30天,因為公司對這數據庫不是很嚴格要求保留多少天,所以我就看磁盤的空間來定
然后通過df -h查看備份磁盤的空間大小,做一個每天的郵件通過,告訴管理員,當天刪除的是哪天的備份,磁盤空間還余多少。
以下是腳本實現:
#!/bin/bash
WEEK=`date +%w`
# Disk size chkeck
echo `df -h | awk '{print $4}'| sed -n '5p'| sed -r 's#(.*)#Waring /Hddf Avail \1 please chkeck Disk#'`>/Shell/backup.log
find /Hddf/database/ -maxdepth 1 -mtime +24 -type d ! -name "zabbix" ! -name "db" ! -name "RTX*" -exec rm -rf {} \; &&\
echo `df -h | awk '{print $4}'| sed -n '5p'| sed -r 's#(.*)#Waring /Hddf Avail \1 please chkeck Disk#'`>>/Shell/backup.log
if [ $? -eq 0 ];then
echo "`date +%y%m%d` 刪除成功 `find /Hddf/database/ -maxdepth 1 -mtime +24 -type d ! -name "zabbix" ! -name "db" ! -name "RTX*"`">>/Shell/b
ackup.log
else
echo "`date +%y%m%d` 刪除不成功 ">>/Shell/backup.log
fi
# from email admin
mail -s "databackup" zhongliang@hdbattery.cn </Shell/backup.log
if [ $WEEK -ne 0 ];then
if [ ! -d /Hddf/database/`date +%y%m%d` ];then
mkdir -p /Hddf/database/`date +%y%m%d`
mv /Hddf/database/{*.bak,*.BAK} /Hddf/database/`date +%y%m%d`/
fi
else
echo "今天是星期日 沒有數據備份">> /Shell/mvdata.txt
fi
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。