備份是容災的基礎,是指爲防止系統出現操作失誤或系統故障導致數據丟失,而將全部或部分數據集合從應用主機的硬盤或陣列複製到其它的存儲介質的過程。而對於一些網站、系統來說,數據庫就是一切,所以做好數據庫的備份是至關重要的!
1 查看磁盤空間情況
既然是定時備份,就要選擇一個空間充足的磁盤空間,避免出現因空間不足導致備份失敗,數據丟失的惡果!
存儲到當前磁盤這是最簡單,卻是最不推薦的;服務器有多塊硬盤,最好是把備份存放到另一塊硬盤上;有條件就選擇更好更安全的存儲介質;
使用 df -h 目前磁盤空間和使用情況
2 創建備份目錄
儘量選擇空間比較充足的目錄,這裏以/home目錄爲例保存備份文件;
進入到/home目錄下,創建backup目錄,並進入到新建的backup目錄下
cd /home
mkdir backup
cd backup
3 創建備份Shell腳本
注意把以下命令中的dataBaseTest換爲實際的數據庫名稱,也可自定命名規則
vi dataBaseTest.sh
輸入/粘貼以下內容:
#備份路徑,沒有提前建好
BACKUP=/home/backup/sql/
#當前時間
DATETIME=$(date +%Y-%m-%d_%H%M%S)
echo "===備份開始==="
echo "備份文件存放於${BACKUP}/$DATETIME.sql.gz"
#這個是我的mysqldump的路徑,使用時要根據自己的環境修改;一般在/var/bin下面
#mysqldump的命令如果沒有寫絕對路徑得話,可能導致備份是空得(指定mysql安裝目錄bin目錄下的mysqldump)
DUMP=/usr/mysql-5.6.39/mysql-5.6.39/bin/mysqldump
#數據庫地址
HOST=10.16.133.23
#數據庫端口號
PORT=3306
#數據庫用戶名
DB_USER=root
#數據庫密碼
DB_PW=root
#創建備份目錄
[ ! -d "${BACKUP}/$DATETIME" ] && mkdir -p "${BACKUP}/$DATETIME"
#後臺系統數據庫
DATABASE=test_backup_database
$DUMP -u${DB_USER} -p${DB_PW} -h${HOST} -P${PORT} -q -R --databases $DATABASE | gzip > ${BACKUP}/$DATETIME/$DATABASE.sql.gz
#壓縮成tar.gz包
cd $BACKUP
tar -zcvf $DATETIME.tar.gz $DATETIME
#刪除備份目錄
rm -rf ${BACKUP}/$DATETIME
#刪除10天前備份的數據
find $BACKUP -mtime +10 -name "*.sql.gz" -exec rm -rf {} \;
echo "===備份成功==="
把HOST替換爲數據庫地址;
把 PORT 替換爲實際數據庫端口號;
把 DB_USER替換爲實際的用戶名;
把 DB_PW替換爲實際的密碼;
把 DATABASE替換爲實際的數據庫名;
4 添加可執行權限
chmod u+x dataBaseTest.sh
添加可執行權限之後先執行一下,看看腳本有沒有錯誤,能不能正常使用(一點要確保備份的.sql文件有數據);
./dataBaseTest.sh
5 添加計劃任務
檢測或安裝 crontab
確認crontab是否安裝:
執行 crontab 命令如果報 command not found,就表明沒有安裝
# crontab
-bash: crontab: command not found
如時沒有安裝 crontab,具體步驟請參考:
https://blog.csdn.net/qq_37138756/article/details/88742622
添加計劃任務
執行命令:
crontab -e
這時就像使用vi編輯器一樣,可以對計劃任務進行編輯。
輸入以下內容並保存:
*/1 * * * * /home/backup/dataBaseTest.sh
意思是每一分鐘執行一次shell腳本“/home/backuwep/dataBaseTest.sh”。
crontab -r 爲刪除定時任務
6 測試任務是否執行
很簡單,我們就執行幾次“ls”命令,看看一分鐘過後文件有沒有被創建就可以了!
如果任務執行失敗了,可以通過以下命令查看任務日誌:
tail -f /var/log/cron
輸出類似如下: