在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);
}
}