這篇文章主要介紹了mysql數據庫的shell腳本自動備份的相關資料,網站或應用的后臺都有備份數據庫的功能按鈕,但需要去手工執行。我們需要一種安全的,每天自動備份的方法需要的朋友可以參考下
MySQL數據庫的shell腳本自動備份
經常備份數據庫是一個好習慣,雖然數據庫損壞或數據丟失的概率很低,但一旦發生這種事情,后悔是沒用的。一般網站或應用的后臺都有備份數據庫的功能按鈕,但需要去手工執行。我們需要一種安全的,每天自動備份的方法。下面的這個shell腳本就是能讓你通過過設定Crontab來每天備份MySQL數據庫的方法。
#!/bin/bash #?數據庫認證 ?user="" ?password="" ?host="" ?db_name="" #?其它 ?backup_path="/path/to/your/home/_backup/mysql" ?date=$(date?+"%d-%b-%Y") #?設置導出文件的缺省權限 ?umask?177 #?Dump數據庫到SQL文件 ?mysqldump?--user=$user?--password=$password?--host=$host?$db_name?>?$backup_path/$db_name-$date.sql
通過上面的腳本,我們可以每天導出一份sql備份文件,文件的名稱按當日日期生成。日積月累,這樣的文件會生成很多,有必要定時刪除一些老舊的備份的文件,下面的這行命令就是做這個任務的,你可以把它加在上面的腳本后面。
#?刪除30天之前的就備份文件 ?find?$backup_path/*?-mtime?+30?-exec?rm?{}?;
我在使用上面的腳本時曾經遇到過一個問題,Crontab定時執行腳本導出沒有報錯,但導出的是空的SQL文件,但登錄到控制臺手工執行這個腳本是備份成功的。后來發現是Crontab執行腳本是缺少系統環境信息,找不到 mysqldump ,改正的方法是使用 mysqldump 全路徑就行了。而之所以沒有報錯信息,是因為 mysqldump 把安全輸出到了 stderr。在命令的后面末尾接 “2>&1” 這樣一個信息重定向命令就可以看到錯誤信息了:
mysqldump?-ujoe?-ppassword?>?/tmp/somefile?2>&1
? 版權聲明
文章版權歸作者所有,未經允許請勿轉載。
THE END