. mysql 定时任务实现数据库备份
@Component
public class Task {
//早八点晚23点实现数据库的全量备份
@Scheduled(cron = "0 0 8,23 * * ?")
public void dump() throws Exception {
String backName = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss").format(new Date());
// 以下分别为 ip/端口/账号/密码/数据库名字/备份文件名称
dataBaseDump("IP地址", "3306", "账号", "密码", "数据库名称", backName);
}
// 备份
public static void dataBaseDump(String host, String port, String username, String password, String databasename,
String sqlname) throws Exception {
File file = new File("D:\\databaseBackup");
if (!file.exists()) {
file.mkdir();
}
File datafile = new File(file + File.separator + sqlname + ".sql");
if (datafile.exists()) {
System.out.println(sqlname + "文件名已存在,请更换");
return;
}
// 拼接cmd命令
Process exec = Runtime.getRuntime().exec("cmd /c mysqldump -h" + host + " -P" + port + " -u " + username + " -p"
+ password + " " + databasename + " > " + datafile);
if (exec.waitFor() == 0) {
System.out.println("数据库备份成功,备份路径为:" + datafile);
}
}
}
SpringbootApplication启动类中 需要加以下注解相关
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.boot.web.servlet.ServletComponentScan;
import org.springframework.context.annotation.Bean;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler;
@ServletComponentScan
@MapperScan("com.aite.aoligei")
@SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })
@EnableScheduling
public class SpringbootApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootApplication.class, args);
}
@Bean
public ThreadPoolTaskScheduler taskScheduler() {
ThreadPoolTaskScheduler taskScheduler = new ThreadPoolTaskScheduler();
taskScheduler.setPoolSize(10);
taskScheduler.initialize();
return taskScheduler;
}
}
注:问题点–假如数据库服务和 主项目部署不在同一电脑设备。备份出来数据库一直为0 大小。
初步解决办法:给两边都转有数据库服务,并且配置环境变量。就可以成功。大家可以试一试。
不足之处 ,希望大家指正。