如何在没有mysql本地安装的情况下将mysql db从Remote备份到本地?

时间:2013-06-06 05:49:31

标签: java mysqldump

美好的一天,我正在尝试从远程服务器到我的本地计算机进行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. 返回值为2的waitFor()是什么意思?
  3. 谢谢&此致

    IMMO

1 个答案:

答案 0 :(得分:3)

解决了!我忘了指定HostIP&使用mysqldump命令的端口更改了我的executeCmd参数,如下所示:

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

以及mysqldump文件路径。我们只需要mysqldump文件就可以将备份从远程服务器转移到本地。无需安装mysql客户端。