CentOS下使用crontab+mysqldump實現定時自動備份資料庫
一 : 為什麼要進行資料庫的備份?
最主要的原因:儘可能地減少損失,包括時間上、精神上和金錢上的損失。很多人都不注意備份資料,以致在發生問題後丟失大量的重要資料。要知道,在地球上網是很危險的,即使做好安全預防措施,也難免會發生不可預想的問題。因此,資料備份是日常必不可少的操作。資料庫的備份用mysqldump
二 : 定時自動備份資料庫
由於資料庫如此重要,以至於我們要經常備份資料庫,但是,由於白天的時候,資料庫處於活躍的狀態,這時候備份資料庫可能會漏存資料,更有可能會導致出錯,因此一般會選擇在凌晨備份資料庫。問題來了,難道要一個數據庫管理員凌晨兩點起床備份資料庫?這時候LINUX的CRONTAB定時任務排上用場了!有關CRONTAB的內容請參考我的另一篇部落格
三 : 編寫一個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指令碼內容如下:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
此時,我們在命令列模式下執行該指令碼: sh /serverBack/mysqlBack.sh
請注意 拷貝的檔案格式;
一 : 為什麼要進行資料庫的備份?
最主要的原因:儘可能地減少損失,包括時間上、精神上和金錢上的損失。很多人都不注意備份資料,以致在發生問題後丟失大量的重要資料。要知道,在地球上網是很危險的,即使做好安全預防措施,也難免會發生不可預想的問題。因此,資料備份是日常必不可少的操作。資料庫的備份用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指令碼內容如下:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
此時,我們在命令列模式下執行該指令碼: sh /serverBack/mysqlBack.sh
sh /serverBack/mysqlBack.sh
/serverBack/mysqlBack.sh: line 24: syntax error: unexpected end of file
如果你出現上面錯誤,是因為格式的原因
參照 http://blog.csdn.net/zhuying_linux/article/details/7736201
此時我們就可以備份資料庫了,但是我們還沒有實現定時自動備份。趕緊測試一下你能不能備份成功吧!
四 : 實現定時自動備份資料庫
有關CRONTAB的內容請參考我的另一篇部落格 CRONTAB定時任務
crontab –e ##編輯定時任務
新增定時任務內容:
##每天定時15:00:00 執行指令碼 /serverBack/mysqlBack.sh
00 15 * * * sh /serverBack/mysqlBack.sh
命令:
crontab –e ##編輯定時任務
crontab –r 刪除所有定時任務
crontab –l 列出所有定時任務
五 : THE END
1 . 有關以上shell檔案的編寫,有興趣的同學可以學習一下linux的shell script;
2 . 本文章參考自Linux下使用crontab自動備份資料庫
此時我們就可以備份資料庫了,但是我們還沒有實現定時自動備份。趕緊測試一下你能不能備份成功吧!
四 : 實現定時自動備份資料庫
有關CRONTAB的內容請參考我的另一篇部落格 CRONTAB定時任務
crontab –e ##編輯定時任務
新增定時任務內容:
##每天定時15:00:00 執行指令碼 /serverBack/mysqlBack.sh
00 15 * * * sh /serverBack/mysqlBack.sh
命令:
crontab –e ##編輯定時任務
crontab –r 刪除所有定時任務
crontab –l 列出所有定時任務
五 : THE END
1 . 有關以上shell檔案的編寫,有興趣的同學可以學習一下linux的shell script;
2 . 本文章參考自Linux下使用crontab自動備份資料庫