使用java實現自動備份mysql資料庫
在實際應用中,定時備份資料庫是一件非常重要的工作,下面是關於利用java程式實現資料庫自動呼叫的方法,其實也不一定非要用java語言了,只要原理會了,大家大可使用其他語言來實現。話不多說,下面就來演示一下如何自動備份mysql下的abc資料庫:
1,在java API中為我們提供了一個Runtime類,它可以用來呼叫一些程式,比如notepad.exe,cmd.exe...
具體怎麼回事,想了解的同學去看API吧,下面是實現程式碼:Backup.java
Java程式碼- import java.util.Calendar;
-
import java.util.Date;
- import java.text.SimpleDateFormat;
- import java.io.IOException;
- import java.io.PrintStream;
- public class Backup
- {
- public static void main(String[] args)
- {
- Runtime runtime = Runtime.getRuntime();
- Calendar calendar = Calendar.getInstance();
-
SimpleDateFormat dateFormat = new
- String currentTime = dateFormat.format(calendar.getTime());
- Process p = null;
- PrintStream print = null;
- StringBuilder buf = new StringBuilder();
- for(String a : args){
- buf.append(a);
-
buf.append(" "
- }
- String databases = buf.toString();
- try{
- p = runtime.exec("cmd /c mysqldump -uroot -p1234 -B "+databases+">"+currentTime+".sql.bak");
- }catch (IOException e){
- if( p != null ){
- p.destroy();
- }
- try{
- print = new PrintStream(currentTime+"_backup_err.log");
- dateFormat.applyPattern("yyyy-MM-dd HH:mm:ss");
- currentTime = dateFormat.format(calendar.getTime());
- print.println(currentTime+" backup failed.");
- e.printStackTrace(print);
- print.flush();
- }catch (IOException e2){
- }finally{
- if(print!=null){
- print.close();
- }
- }
- }
- }
- }
2,將以上java程式編譯後得到Backup.class檔案;
3,建立批處理檔案mytask.bat:
Bat程式碼- @echo off
- cd c:\backup_wj
- rem 這裡提倡使用絕度路徑,並且如果絕度路徑中有空格,記得用
- rem 引號將路徑括起來!
- rem 可以將abc替換為其他資料庫,多多個數據庫,並用空格隔開
- "D:\Program Files\Java\jdk1.6.0_31\bin\java.exe" Backup abc
3.1:根據評論我又發現了一個新的方法,不需要使用java,直接寫一個批處理檔案就可以實現自動備份功能,讀者可以直接使用下面的批處理檔案代替原來的批處理檔案,不需要在使用java了,然後按照下面的步驟制訂計劃任務就可以了,程式碼如下:
Bat程式碼- mysqldump -uroot -p1234 -B abc > %date:~0,4%%date:~5,2%%date:~8,2%_%time:~0,2%%time:~3,2%%time:~6,2%.sql.bak
4,將Backup.class、mytask.bat放到同一個目錄下,比如我就放在了c:\backup_wj目錄下
5,在win7下配置任務計劃,下面照著步驟一步一步走就行了:
5.1:在控制面板下找到“管理工具”——》“任務計劃程式”
5.2:選擇“任務計劃程式庫”——》“建立基本任務”
5.3:填寫任務名稱和描述
5.4:下面根據嚮導的描述操作就可以了;
5.5:點選“瀏覽”選擇批處理檔案“mytask.bat”;
5.6:點選“完成”後,選中autoBackup,點選“執行”測試一下:
是不是有一個黑視窗一閃而過,好的那麼開啟你存放backup.bat的目錄看一看,是不是生成了一個備份檔案呢?
下面是我的,不過我們的備份檔案已經生成了4次,從檔名就可以看出生成的時間。
那麼其中的原理大家都會了吧,其實就是讓我們的作業系統定時去執行一個批處理檔案“Backup.bat”,而這個批處理檔案會去執行一個.class檔案,這是一個java可執行檔案,它會呼叫runtime.exec()方法,在命令列下執行一段命令,這段命令就是備份資料庫的命令。
注意:對於備份的時間,我們可以設定得更加精細,通過“編輯觸發器”中的“重複任務間隔”我們可以精確到每5分鐘重複執行一次。具體怎麼設定大家可以根據實際情況來設定。