在liunux中我們先定義好一個備份mysql的Shell指令碼,然後再通過linux中的Cron可以定時執行該指令碼,備份會自動完成,下面我來分享一下我的mysql備份過程。
Shell指令碼是我們寫不同類型命令的一種指令碼,這些命令在這一個檔案中就可以執行。我們也可以逐
一敲入命令手動執行。如果我們要使用shell指令碼就必須在一開始把這些命令寫到一個文字檔中,以後
就可以隨意反覆運行這些命令了。
假定你已經知道shell scripting、 mysqldump和crontab。首先給出完整的指令碼,後面會對該腳
本做說明。
適用作業系統:任何Linux或UNIX。
1.建立指令碼
該Shell指令碼可以自動備份資料庫。只要複製粘貼本指令碼到文字編輯器中,輸入資料庫使用者名稱、密
碼以及資料庫名即可。這裡我們備份資料庫使用的是mysqldump 命令。後面會對每行指令碼命令進行說明
。
(1)在你想要放置備份檔案的目錄下建立兩個目錄"backup"和"oldbackup",這裡使用的是根目錄
代碼如下 |
複製代碼 |
1 #mkdir /backup
2 #mkdir /oldbackup |
(2)建立並編輯檔案"backup.sh"
代碼如下 |
複製代碼 |
1 #!bin/bash 2 cd /backup 3 echo "You are In Backup Directory" 4 mv backup* /oldbackup 5 echo "Old Databases are Moved to oldbackup folder" 6 Now=$(date +"%d-%m-%Y--%H:%M:%S") 7 File=backup-$Now.sql 8 mysqldump –u user-name –p 'password' database-name > $File 9 echo "Your Database Backup Successfully Completed" |
(3)設定 backup.sh 指令檔的可執行許可
代碼如下 |
複製代碼 |
1 # chmod +x /backup/backup.sh
|
(4)指令碼執行
1 #./backup.sh
指令碼運行結束後會得到以下輸出:
代碼如下 |
複製代碼 |
1 root@Server1:/download#./backup.sh
2 You areinDownload Directory 3 Old Backup DatabaseisMoved to oldbackup folder 4 database backup successful completed 5 root@Server1:/download# |
註:首次執行該指令碼會有一個"no such file"的提示資訊,這是由於舊備份檔案還不存在。只要
再次執行該指令碼就沒有問題了,這個問題已經不存在了。
2.指令碼說明
在第8行命令中,在mysqldump命令後要輸入自己的資料庫使用者名稱、密碼及資料庫名。
執行該指令碼,首先會進入 /backup 目錄(要與自己建立的目錄保持一致),然後該指令碼會把原有
的舊Database Backup移動到 /oldbackup 檔案夾中,接著根據系統的日期及時間產生一個檔案名稱,在最後
mysqldump 命令會產生一個".sql"格式的Database Backup檔案。
3.使用cron制定備份計劃
使用Cron可以定時執行該指令碼,備份會自動完成。使用 crontab 命令編輯cron 執行的計劃任務
。
在編輯器中輸入一下代碼,儲存退出即可:
代碼如下 |
複製代碼 |
1 013* * * * /backup/backup.sh
|
本任務表示的是在每天下午1點鐘把Database Backup到指定的檔案夾(具體備份周期可根據自己的實際
情況設定)。有關cron任務設定的詳細內容可以查閱crontab手冊。
到這裡一個定時自動備份mysql的功能就得以實現,為保證資料庫的安全性,李壞建議大家都養成
備份資料庫的習慣。