【相關學習推薦:#mysql教學】
前言:
資料庫備份的重要性不言而喻,特別是在生產環境,任何資料的遺失都可能產生嚴重的後果。所以,無論什麼環境,我們都應該有對應的備份策略來定時備份資料庫。在 MySQL 中,比較常用的邏輯備份工具是 mysqldump,這篇文章將介紹 MySQL 定時備份的方法。
1.制定合適的備份策略
對於不同的資料庫環境,我們應該考慮不同的備份策略。制定備份策略時,應考慮以下幾點因素:
2.Linux系統備份腳本
#Linux 系統下,我們可以利用crontab 定時任務來執行備份腳本,如果你你對crontab 還不了解,可以參考以下介紹快速學習下。
crontab是一個指令,常見於Unix和類別Unix的作業系統之中,用來設定週期性被執行的指令。
格式:
* * * * * command
分時日月週指令
第1列表示分鐘1~59 每分鐘用*或*/1表示
第2列表示小時1~23(0表示0點)
第3列表示日期1~31
第4列表示月份1~12
第5列識別號星期0~6(0表示星期日)
第6列要執行的命令
crontab -e 編輯該用戶下的定時任務設定
crontab -l 列出該用戶下的所有定時任務
下面我們來正式書寫備份腳本,廢話不多說,先給出腳本模板:
#!/bin/bash # ------------------------------------------------------------------------------- # FileName: mysql_backup.sh # Describe: Used for database backup # Revision: 1.0 # Date: 2020/08/11 # Author: wang # 设置mysql的登录用户名和密码(根据实际情况填写) mysql_user = "root" mysql_password = "yourpassword" mysql_host = "localhost" mysql_port = "3306" backup_dir = /data/mysql_backup dt=date +'%Y%m%d_%H%M' echo "Backup Begin Date:" $(date +"%Y-%m-%d %H:%M:%S") # 备份全部数据库 mysqldump -h$mysql_host -P$mysql_port -u$mysql_user -p$mysql_password -R -E --all-databases --single-transaction > $backup_dir/mysql_backup_$dt.sql find $backup_dir -mtime +7 -type f -name '*.sql' -exec rm -rf {} \; echo "Backup Succeed Date:" $(date +"%Y-%m-%d %H:%M:%S")
以上腳本可根據實際情況修改,比如備份某一個庫、保留時間變更等等。腳本寫完後要注意調試,調試完成後就可以部署了,例如我們打算每天凌晨2點進行備份,則可以這樣設定定時任務。
# 注意脚本执行权限及修改脚本路径 00 02 * * * sh /root/scripts/mysql_backup.sh > /root/scripts/mysql_backup.log 2>&1
3.Windows系統備份腳本
Windows 系統備份腳本也是類似的,只不過變成了bat腳本,需要設定排程任務來定時執行。例如我們可以在E盤下建立一個MySQLdata_Bak 目錄,此目錄下建立mysql_backup 目錄存放備份文件,mysql_bak.bat 是備份腳本,腳本內容如下(自動刪除7天前的備份文件):
rem auther:wang rem date:20200811 rem ******MySQL backup start******** @echo off forfiles /p "E:\MySQLdata_Bak\mysql_backup" /m backup_*.sql -d -7 /c "cmd /c del /f @path" set "Ymd=%date:~0,4%%date:~5,2%%date:~8,2%0%time:~1,1%%time:~3,2%%time:~6,2%" "E:\mysql5.7.23\bin\mysqldump" -uroot -p123456 -P3306 --default-character-set=utf8 -R -E --single-transaction --all-databases > "E:\MySQLdata_Bak\mysql_backup\backup_%Ymd%.sql" @echo on rem ******MySQL backup end********
以上腳本僅供參考,可依自己的環境稍加改動。同樣的,腳本調試完成後就可以加入計劃任務了,如果你對 Windows 計劃任務還不了解,可以百度下,也是比較方便簡單的。
4.備份可用性校驗
除了備份,非常重要的一件事情就是驗證備份資料的可用性。想像一下,當你需要進行資料復原的時候,突然發現過去的備份資料都是無效的,那得有多難受。很多朋友在寫好備份腳本加到定時任務後,只是檢查下定時任務有執行,備份目錄有文件就不再關注了,往往到了需要使用備份文件的時候才發現備份資料有問題。
目前對於備份檔案的資料校驗沒有非常方便的辦法,用的比較多的還是定時把備份檔案拉出來做備份復原演練,例如一個月做一次備份復原演練就可以有效提高備份文件可用性,心裡也踏實。
所以,千萬不要以為有了備份就萬無一失了,平時也要多檢查備份腳本執行是否正確,生產的備份腳本內容是否可用,最好可以定期做恢復演練。
相關學習推薦:程式設計影片
以上是看看MySQL備份腳本的寫法的詳細內容。更多資訊請關注PHP中文網其他相關文章!