Java实现定时备份数据库

在Java开发中为防止数据丢失定时备份数据库肯定是重中之重,这里教大家一下数据库定时备份代码的实现。

import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;

@Component
public class demo {

    @Scheduled(cron = "0/59 * * * * ? ") //Cron表达式  代表每60秒执行一次
    protected void demo() {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
        String now = sdf.format(new Date());
        System.out.println("定时备份数据库》》》"+now);
        String filePath=""; //需要备份到本地的路径
        String dbName="";//备份的数据库名
        String username="";//用户名
        String password="";//密码
        //查询本地路径中的文件夹是否存在   如果不存在就创建一个新的文件夹
        File uploadDir = new File(filePath);
        if (!uploadDir.exists()) {
            uploadDir.mkdirs();
        }
        //生成的文件名称为  数据库名_当前时间.sql   例如 Veddy_20200421105059.sql
        String fileName = dbName+"_"+now+".sql";
        //备份数据库的命令
        String cmd =  "mysqldump -u "+ username +" -p"+password + " " + dbName + " -r "
                + filePath + fileName;
        try {
            //执行命令
            Process process = Runtime.getRuntime().exec(cmd);
            System.out.println("备份数据库成功!!!");
        } catch (Exception e) {
            System.out.println("数据库备份出错!!!");
            System.out.println(e);
            e.printStackTrace();
        }

    }

}


如果现在要想执行此任务,那么还需要有一个基本的前提:你的程序启动类上一定要启用调度处理@EnableScheduling。

//启动类
@SpringBootApplication
@MapperScan(basePackages = "")  //批量扫描Mapper包下的Mapper接口,并且生成代理类实例
@EnableTransactionManagement  //启动事务管理
@EnableScheduling  //定时任务调度处理
public class MyBlogApplication {

    public static void main(String[] args) {
        SpringApplication.run(MyBlogApplication.class, args);
    }

}