最近无聊,闲来无事,就喜欢研究。于是想搞一下数据库的自动备份。 Windows和Linux通用。这是一种比较麻烦的备份,其实一般数据库的备份和还原都是通过shell完成的。 至于这里的数据库还原太麻烦,需要修改配置文件,而且基本不用(主要还是自己不太熟悉,讲不清楚)。 数据库备份代码:
public boolean databaseBack(String mysqlDump,String hostIP,String port,String user,String password,String dataOrTableName,String savePath,String exportFileName) throws IOException, InterruptedException {
StringBuilder sb = new StringBuilder();
String[] cmd = new String[3];
if (isLinuxSystem()){
cmd[0]="/bin/sh";
cmd[1]="-c";
}else{
cmd[0]="cmd";
cmd[1]="/c";
}
if (mysqlDump.endsWith(File.separatorChar+"")){
sb.append(mysqlDump+"mysqldump -h");
}else{
sb.append(mysqlDump+File.separatorChar+"mysqldump -h");
}
sb.append(hostIP+" -P");
sb.append(port+" -u");
sb.append(user+" -p");
sb.append(password+" ");
sb.append(dataOrTableName+" > ");
if (!savePath.endsWith(File.separatorChar+"")){
sb.append(savePath+File.separatorChar);
}else {
sb.append(savePath);
}
sb.append(exportFileName);
System.out.println(sb);
cmd[2] = sb.toString();
Process exec = Runtime.getRuntime().exec(cmd);
if(exec.waitFor()!=0){
return false;
}
return true;
}
public boolean isLinuxSystem(){
if(System.getProperty("os.name").toLowerCase().contains("linux")){
return true;
}
return false;
}
数据导出成功,这是Linux上的
|