一 : 為什么要進行數據庫的備份?
最主要的原因:盡可能地減少損失,包括時間上、精神上和金錢上的損失。很多人都不注意備份數據,以致在發生問題后丟失大量的重要數據。要知道,在地球上網是很危險的,即使做好安全預防措施,也難免會發生不可預想的問題。因此,數據備份是日常必不可少的操作。數據庫的備份用mysqldump
二 : 定時自動備份數據庫
由於數據庫如此重要,以至於我們要經常備份數據庫,但是,由於白天的時候,數據庫處於活躍的狀態,這時候備份數據庫可能會漏存數據,更有可能會導致出錯,因此一般會選擇在凌晨備份數據庫。問題來了,難道要一個數據庫管理員凌晨兩點起床備份數據庫?這時候LINUX的CRONTAB定時任務排上用場了!有關CRONTAB的內容請參考我的另一篇博客 CRONTAB定時任務(window系統可以使用 ‘任務計划’)
三 : 編寫一個shell腳本,執行備份
我們可以在根目錄下編寫這么一個腳本 : /serverBack/mysqlBack.sh
腳本內容如下:
方法一:
##使用mysqldump備份數據庫test
mysqldump -uroot -ppasswd test >> /serverBack/dbBack/test_$(date+”%Y_%m_%d”).sql
##找到/serverBack/dbBack/下文件名稱以test_開頭,以 .sql 結尾的文件,並且是7天前系統修改過的文件,將其刪除
find /serverBack/dbBack/ -mtime +7 -name “test_*.sql” -exec rm -rf {} \;
方法二:
mysqldump -uroot -ppwd dbname > dir/db_date +%F
.sql
保留近一周的備份文件,更早的刪除
find /dir -mtime +7 -name”db_*.sql” -exec rm -rf {} \;
方法三:
filename=’date +%y%m%d’
mysqldump -uroot-proot test >>/serverBack/dbBack/$filename.sql
比較齊全,常用的shell腳本內容如下:
## 記錄日志 echo "---------------------------------------------------" >> /serverBack/dbBack/dbBackLog.log echo $(date +"%Y-%m-%d %H:%M:%S") "test Database backup start" >> /serverBack/dbBack/dbBackLog.log ## 開始備份 mysqldump -uroot -ppwd test >> /serverBack/dbBack/test_$(date +"%Y-%m-%d").sql ## $? 判斷上一次操作是否成功,備份成功返回0 if [ 0 -eq $? ];then if [ -f "/serverBack/dbBack/test_$(date +"%Y-%m-%d").sql" ];then echo $(date +"%Y-%m-%d %H:%M:%S") "test Database backup success!" >> /serverBack/dbBack/dbBackLog.log else echo $(date +"%Y-%m-%d %H:%M:%S") "test Database backup fail!" >> /serverBack/dbBack/dbBackLog.log fi else echo $(date +"%Y-%m-%d %H:%M:%S") "test Database backup error!" >> /serverBack/dbBack/dbBackLog.log fi echo "---------------------------------------------------" >> /serverBack/dbBack/dbBackLog.log ## 刪除七天前的數據,防止數據冗余 find /serverBack/dbBack/ -mtime +7 -name "test_*.sql" -exec rm -rf {} \; ## find后面的';'不能省略
此時,我們在命令行模式下執行該腳本: sh /serverBack/mysqlBack.sh
此時我們就可以備份數據庫了,但是我們還沒有實現定時自動備份。趕緊測試一下你能不能備份成功吧!
四 : 實現定時自動備份數據庫
有關CRONTAB的內容請參考我的另一篇博客 crontab定時任務
crontab –e ##編輯定時任務
添加定時任務內容:
##每天定時15:00:00 執行腳本 /serverBack/mysqlBack.sh
00 15 * * * sh /serverBack/mysqlBack.sh
命令:
crontab –e ##編輯定時任務
crontab –r 刪除所有定時任務
crontab –l 列出所有定時任務
轉:https://blog.csdn.net/baidu_30000217/article/details/51106192