2013-06-06 27 views
0

好日子,我想從遠程服務器到我的本地機器的MySQL備份。我能夠這樣做,當我有本地機器上安裝MySQL客戶端。但是,當客戶端可是沒有本地MySQL客戶端安裝,這是不工作...如何備份MySQL數據庫從遠程到本地沒有MySQL本地安裝?

我一直在使用JDBC連接連接到MySQL服務器和我的代碼片段如下:

try{  
String cs = "jdbc:mysql://" + dbh + ":" + dbport + "/" + database + "?user=" + USER + "&password=" + PASS+""; 
Class.forName("com.mysql.jdbc.Driver").newInstance(); 
connection = java.sql.DriverManager.getConnection(cs); 
String executeCmd = ""; 
    if(connection!=null){ 
     executeCmd = "mysqldump -u "+USER+" -p"+PASS+" "+database+" -r "+path; 
     Process runtimeProcess =Runtime.getRuntime().exec(executeCmd); 
     int processComplete = runtimeProcess.waitFor(); 
     if(processComplete == 0){ 
      System.out.println("Backup taken successfully"); 
     } else { 
      System.out.println("Could not take mysql backup"); 
     } 
    } else{ 
     System.out.println("connection not sucess"); 
    } 
}catch (Exception e) { 
      e.printStackTrace(); 
} 

我想這可能是mysqldump PATH的一些問題,所以我將這個文件複製到客戶端機器上,並且指定了絕對路徑爲executeCmd中的mysqldump。這次備份文件是在指定路徑中創建的,但其空的& processComplete返回值2。 我的問題是,

  1. 我需要任何其他的mysql文件來運行mysqldump命令嗎?如果是這樣,除了將這些命令複製到本地機器以外如何做?
  2. waitFor()返回值2是什麼意思?

感謝&問候

IMMO

+0

解決它!我忘記指定HOSTIP&與mysqldump命令端口 改變了我executeCmd參數如下: executeCmd = PathToMySqlDumpFile + 「的mysqldump -h 」+ HOSTIP +「 -P 」+ PORT +「 -U」 + USER +「-p」+ PASS +「」+ database +「-r」+ path; 以及my​​sqldump文件路徑。 我們只需要將mysqldump文件從遠程服務器備份到本地即可。無需安裝mysql客戶端。 – RahulArackal

回答

3

解決它!我忘了跟我改變executeCmd參數如下mysqldump命令指定HOSTIP &端口:

executeCmd = PathToMySqlDumpFile+"mysqldump -h "+HOSTIP+" -P "+PORT+" -u "+USER+" -p"+PASS+" "+database+" -r "+path; 
沿

mysqldump文件路徑。我們只需要mysqldump文件就可以將遠程服務器的備份傳輸到本地。無需安裝mysql客戶端。

相關問題