问题
Good Day, I am trying to take mysql backup from remote server to my local machine. I am able to do so, when i have mysql client installed on local machine. But when the client doesnt have local mysql client installation, it is not working ...
I have been connecting to mysql server using the jdbc connection and my code snippet is as follows:
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();
}
I think this might be some problem with mysqldump PATH, so i copied this file to client machine, and specified absolute path to mysqldump in executeCmd
. This time the backupfile is created in specified path, but its empty & processComplete
returns a value 2
.
My Questions are,
- Do i need any other mysql files to run the mysqldump command? If so how to do that other than copy these commands to local machine?
- What does waitFor() with return value 2 mean?
Thanks & Regards
iMmo
回答1:
Solved it!, I forget to specify the HostIP & port with the mysqldump command Changed my executeCmd parameter as following:
executeCmd = PathToMySqlDumpFile+"mysqldump -h "+HOSTIP+" -P "+PORT+" -u "+USER+" -p"+PASS+" "+database+" -r "+path;
along with the mysqldump file path. We only need the mysqldump file to take the backup from remote server to local. No need for mysql client installation.
来源:https://stackoverflow.com/questions/16954543/how-to-backup-mysql-db-from-remote-to-local-without-mysql-local-installation