@Slf4j
@Component
public class MySQLBacupUtil {
/**
* 生成备份数据库文件
*/
@Scheduled(cron="0 0 1 * * ?") //每天凌晨1点执行一次 0 53 16 * * ?
public void backup(){
// System.out.println("############生成备份文件");
backupData("数据库的表名","root","123456","D:\\mysqlbackup\\");
}
/**
* 删除10天之前的数据
*/
@Scheduled(cron=" 0 10 1 * * ?") //每天凌晨1点10执行一次 0 10 1 * * ?
public void deleteBackUp(){
Date date = new Date(System.currentTimeMillis() - 1000 * 60 * 60 * 24 *10);
File folder = new File("D:\\mysqlbackup\\");
File[] files = folder.listFiles();
for (int i=0;i<files.length;i++){
File file = files[i];
if (new Date(file.lastModified()).before(date)){
file.delete();
}
}
}
/**
* 数据库备份
* @param dbName 数据库名
* @param account 账号
* @param pass 密码
* @param savaPath 保存路径
* @return
*/
public static boolean backupData(String dbName,String account,String pass,String savaPath){
// Long starttime=System.currentTimeMillis();
Runtime rt=Runtime.getRuntime();
Process process;
try {
//新的数据库名称为原数据库表名称加当前日期
String command="mysqldump "+dbName+" -u "+account+" -p"+pass+" --result-file="+savaPath+"数据库表名"+new SimpleDateFormat("yyyyMMdd").format(new Date())+".sql";
process = rt.exec(command);
if(process.waitFor()==0){
System.out.println("mysqldump backup successfully");
// Long endtime=System.currentTimeMillis();
// Long distance=starttime-endtime;
// System.out.println("mysqldump备份花"+distance/1000+"秒");
return true;
}else{
log.info("process.waitFor()!=0");
InputStream is=process.getErrorStream();
if(is!=null){
BufferedReader in=new BufferedReader(new InputStreamReader(is,"utf-8"));
String line;
while((line=in.readLine())!=null){
log.error("mysqldump错误日志>"+line);
}
}
}
}catch (Exception e) {
log.info("mysqldump backup failed");
e.printStackTrace();
return false;
}
return false;
}
}
定时任务:mysql数据库备份
最新推荐文章于 2024-09-07 16:20:08 发布