java备份mysql数据库
package com.lear.util;
import org.apache.commons.io.IOUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.io.*;
import java.text.SimpleDateFormat;
import java.util.Date;
@Component
public class DbJob {
private final Log logger = LogFactory.getLog(DbJob.class);
@Scheduled(cron = "58 05 19 * * ?")
public void back(){
System.out.println("现在时间是"+new Date());
Runtime runtime = Runtime.getRuntime();
String user = "root";
String password = "root";
String database = "mydb";
Date currentDate = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd_HH-mm-ss");
String sdfDate = sdf.format(currentDate);
String filepath = "d:\\database_copy\\time_" + sdfDate + ".sql";
String stmt = "mysqldump --column-statistics=0 -h 127.0.0.1 -u "+user+" -p"+password+" --databases "+database+" > "+filepath;
System.out.println(stmt);
try {
String[] command = { "cmd", "/c", stmt};
Process process = runtime.exec(command);
InputStream input = process.getInputStream();
System.out.println(IOUtils.toString(input, "UTF-8"));
InputStream errorStream = process.getErrorStream();
System.out.println(IOUtils.toString(errorStream, "UTF-8"));
} catch (IOException e) {
e.printStackTrace();
}
}
java还原mysql数据库
@Scheduled(cron = "00 40 20 * * ?")
public static boolean importDatabase() {
String hostIP="127.0.0.1";
String hostPort="3306";
String userName="root";
String password="root";
String importFilePath="D:\\database_copy\\";
String sqlFileName="time_2022-03-13_19-05-58.sql";
String databaseName="mydb";
File imporFile = new File(importFilePath);
if (!imporFile.exists()) {
imporFile.mkdirs();
}
if (!importFilePath.endsWith(File.separator)) {
importFilePath = importFilePath + File.separator;
}
try {
Process process = Runtime.getRuntime().exec("cmd /C" + "mysql -h"+hostIP+" -P"+hostPort+" -u"+userName+" -p"+password+" "+databaseName+"<"+importFilePath+sqlFileName);
if (process.waitFor()==0){
return true;
}
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e){
e.printStackTrace();
}
return false;
}
}