定时任务:mysql数据库备份

@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;

    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值