packagecom.hymake.xmq;importjava.io.BufferedReader;importjava.io.BufferedWriter;importjava.io.File;importjava.io.FileOutputStream;importjava.io.IOException;importjava.io.InputStream;importjava.io.InputStreamReader;importjava.io.OutputStreamWriter;importjava.util.Calendar;importjava.util.Date;/*** MySql数据备份工具类
*@authorxiongmq
**/
public classMySqlBackup {public static voidmain(String[] args) {
doBackup();
}//mySql数据备份
public static booleandoBackup(){boolean flag=false;//设置备份信息
String databaseName="weixin";//数据库名字
String mysqldumpUrl="C:\\Program Files\\MySQL\\MySQL Server 5.5";//mysql安装位置
String savePath="d:\\数据备份"; //备份文件保存位置
String host="127.0.0.1";//主机ip
String port="3306";//端口
String userName="root";//登录名
String password="123456";//登录密码//初始化bat文件
String dataBackupBatPath = System.getProperty("java.io.tmpdir")+ "\\dataBackup.bat";//创建bat文件,好做调用
getBackupBat(dataBackupBatPath);//拼凑备份命令
StringBuilder cmdStr=newStringBuilder();
cmdStr.append(dataBackupBatPath);
Calendar cal=Calendar.getInstance();
Date now=newDate();
cal.setTime(now);
String year=String.valueOf(cal.get(Calendar.YEAR));
String month=cal.get(Calendar.MONTH)+1<10?"0"+String.valueOf(cal.get(Calendar.MONTH)+1):String.valueOf(cal.get(Calendar.MONTH)+1);
String date=cal.get(Calendar.DATE)<10?"0"+String.valueOf(cal.get(Calendar.DATE)):String.valueOf(cal.get(Calendar.DATE));
String hour=cal.get(Calendar.HOUR_OF_DAY)<10?"0"+String.valueOf(cal.get(Calendar.HOUR_OF_DAY)):String.valueOf(cal.get(Calendar.HOUR_OF_DAY));
String minute=cal.get(Calendar.MINUTE)<10?"0"+String.valueOf(cal.get(Calendar.MINUTE)):String.valueOf(cal.get(Calendar.MINUTE));
String sec=cal.get(Calendar.SECOND)<10?"0"+String.valueOf(cal.get(Calendar.SECOND)):String.valueOf(cal.get(Calendar.SECOND));
String sqlFielName=databaseName+"_"+year+month+date+hour+minute+sec;
String sqlFielPath=year+"\\"+month;
cmdStr.append(" \""+savePath+"\"");
cmdStr.append(" \""+sqlFielPath+"\"");//获取数据库位置
cmdStr.append(" \""+mysqldumpUrl+"\"");
cmdStr.append(" "+host);
cmdStr.append(" "+port);
cmdStr.append(" "+userName);
cmdStr.append(" "+password);
cmdStr.append(" "+databaseName);
cmdStr.append(" "+sqlFielName);try{//执行命令
Process p =Runtime.getRuntime().exec(cmdStr.toString());
InputStream fis=p.getInputStream();
InputStreamReader isr=newInputStreamReader(fis);
BufferedReader br=newBufferedReader(isr);while((br.readLine())!=null) {
flag=true;
}
}catch(IOException e) {
e.printStackTrace();
}returnflag;
}/*** 创建bat文件
*@paramtempPath*/
public static booleangetBackupBat(String tempPath){boolean flag=false;
StringBuilder content=newStringBuilder();
content.append("SET BACK_DIR=%1");
content.append("\r\n");
content.append("md %BACK_DIR%\\%2");
content.append("\r\n");
content.append("SET BACK_PATH=%BACK_DIR%\\%2");
content.append("\r\n");
content.append("SET MYSQL_PATH=%3");
content.append("\r\n");
content.append("%MYSQL_PATH%\\bin\\mysqldump.exe --opt -h%4 -P%5 -u%6 -p%7 %8> %BACK_PATH%\\%9.sql ");
content.append("\r\n");
content.append("echo 数据备份完毕!");
String directoryPath= tempPath.substring(0, tempPath.lastIndexOf("\\"));
String fileName= tempPath.substring(tempPath.lastIndexOf("\\") + 1, tempPath.length());boolean checkDirectoryIsExist = newFile(directoryPath).exists();if(!checkDirectoryIsExist){newFile(directoryPath).mkdirs();
}try{
File file= new File(directoryPath + File.separator +fileName);
BufferedWriter bw= new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file), "UTF-8"));
bw.write(content.toString());
flag= true;
bw.close();
}catch(IOException e) {
e.printStackTrace();
}returnflag;
}
}