標籤:style blog http color io os ar java for
先貼出來參考地址:http://www.open-open.com/lib/view/open1331354269624.html
直接貼代碼:
package com.ly.jxc.util;import java.io.IOException;import java.text.SimpleDateFormat;import java.util.Date;public class DBRecover { /** 訪問MySQL資料庫伺服器所在的url */ private String serverUrl; /** 訪問MySQL資料庫的使用者名稱 */ private String username; /** 訪問MySQL資料庫的密碼 */ private String password; public String getServerUrl() { return serverUrl; } public void setServerUrl(String serverUrl) { this.serverUrl = serverUrl; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public DBRecover(String serverUrl,String username, String password) { super(); this.serverUrl=serverUrl; this.username = username; this.password = password; } public String backup(String backupPath, String dbName) throws IOException { String backupFile = backupPath+ new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss").format(new Date()) + ".sql"; String mysql =backupPath+"mysqldump "+"--host="+serverUrl+" --user=" + username + " --password="+ password + " --opt " + dbName + "> "+backupFile ; System.out.println("備份"+mysql); java.lang.Runtime.getRuntime().exec("cmd /c " + mysql); System.out.println("備份成功!"); return backupFile; } public void restore(String restoreFile, String dbName,String path) throws Exception { String mysql = path+"mysql "+"-h"+serverUrl+" -u" + username + " -p"+ password + " " + dbName + " < " + restoreFile; System.out.println("+++++++++++++++++++++++++++"+mysql); java.lang.Runtime.getRuntime().exec("cmd /c " + mysql); System.out.println("還原成功!"); } /** * @param args */ public static void main(String[] args) { String serverUrl="192.168.1.6"; String userName = "root"; String pwd = "root"; DBRecover backup = new DBRecover(serverUrl,userName, pwd); try { backup.backup("", "lyjxc");// backup.restore("d:/nationz2010-12-20-14-16-47.sql", "nationz"); } catch (Exception e) { e.printStackTrace(); } }}
注意點:1.在 backup 和 restore 中的執行中我分別有一些變化,因為需要用到mysql bin下面的 mysql.exe,mysqldump.exe,由於沒有配置mysql 的環境設定,所以我將這兩個檔案拷貝到我的項目中 exec 執行的時候是執行我項目中的這兩個檔案。就是代碼中mysql前面的兩個變數就是代表執行的是我項目中的mysql.exe,mysqldump.exe
2.拷貝出來的目的還有另一個,由於mysql預設安裝路徑是在系統硬碟的program file檔案夾下。如果直接用mysql>bin 下面 mysql.exe,mysqldump.exe,備份出來的sql檔案為0kb,是由於program file 檔案夾名字存在空格,會影響。所以為了保險我將檔案放到我的項目中來執行。
3.還有sql檔案名稱字中貌似還不能有“:” 時分秒的間隔 我想用冒號,結果生產不出來的。
OK 到此結束。我本地測試內部伺服器通過。
Java Web 專案中對Database Backup和恢複