@Scheduled(cron = "0/60 * * * * ? ")
public void backupData() {
try {
String os = System.getProperty("os.name");
System.out.println("os= "+ os );
String backName = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss").format(new Date())+".sql";
Properties props=PropertiesLoaderUtils.loadAllProperties("dbbackup.properties");
for(Object key:props.keySet()){
System.out.print(key+":");
System.out.println(props.get(key));
}
String mysqldumpPath=props.getProperty("mysqldumpPath");
String dbAddress=props.getProperty("dbAddress");
String dbport=props.getProperty("dbport");
String databaseName=props.getProperty("databaseName");
String username=props.getProperty("username");
String password=props.getProperty("password");
String sqlFilePath=props.getProperty("sqlFilePath");
if(!os.toLowerCase().startsWith("win")){
mysqldumpPath=props.getProperty("linux.mysqldumpPath");
sqlFilePath=props.getProperty("linux.sqlFilePath");
}
dbBackUp(mysqldumpPath,dbAddress,dbport,username,password,databaseName,sqlFilePath,backName, os);
} catch (Exception e) {
System.out.println("backup error"+e.getMessage());
e.printStackTrace();
}
}
public static void dbBackUp(String mysqldumpPath, String url,String port,String root,String pwd,String dbName,String backPath,String backName,String os) throws Exception {
String pathSql = backPath+backName;
File fileSql = new File(pathSql);
File fileParent = fileSql.getParentFile();
if(!fileParent.exists()){
fileParent.mkdirs();
}
String strDate = DateUtil.getAfterDayDate( "7");
Date date = DateUtil.parseDate(strDate,"yyyy-MM-dd");
System.out.println("date="+ date);
File[] files = fileParent.listFiles();
for (int i=0;i<files.length;i++){
File file = files[i];
if (new Date(file.lastModified()).before(date)){
file.delete();
}
}
if (!fileSql.exists()){
fileSql.createNewFile();
}
StringBuffer sb = new StringBuffer();
sb.append(mysqldumpPath);
sb.append(" -h"+url);
sb.append(" -P"+port);
sb.append(" -u"+root);
sb.append(" -p"+pwd);
sb.append(" --default-character-set=utf8 --hex-blob --skip-lock-tables "+dbName+" >");
sb.append(pathSql);
if(os.toLowerCase().startsWith("win")){
String [] cmd={"cmd","/c",sb.toString()};
Runtime.getRuntime().exec(cmd );
}else {
String [] cmd={"/bin/sh","-c",sb.toString()};
Runtime.getRuntime().exec(cmd );
}
}
java mysqldump backup db
最新推荐文章于 2023-03-15 20:47:31 发布