java 代码实现数据库备份
- 引入xxl-job,定时调度改方法,实现数据库备份
配置类
import lombok.Data;
@Data
public class BackupConfig {
private String ip = "10.1.132.23 ";
private String backupPath = "D:\\test\\backup";
private String mysqldumpPath = "mysqldump";
private String username = "root";
private String password = "root";
private String port = "3306";
private String dbName = "dbName";
}
执行方法
import com.spic.project.service.BriefingScheduleService;
import com.xxl.job.core.context.XxlJobHelper;
import com.xxl.job.core.handler.annotation.XxlJob;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@Component
public class XxlJobTask {
private static Logger logger = LoggerFactory.getLogger(XxlJobTask.class);
@XxlJob("buckUpDBJobHandler")
public void buckUpDBJobHandler() throws Exception {
XxlJobHelper.log("request param.");
logger.info("执行--数据库备份--定时任务begin时间: " + LocalDateTime.now());
BackupConfig backupConfig = new BackupConfig();
File file = new File(backupConfig.getBackupPath());
if (!file.exists()) {
file.mkdirs();
}
String fileName = backupConfig.getBackupPath() + "/" + "mysql" + System.currentTimeMillis() + ".sql";
String c1 = "/bin/sh";
String c2 = "-c";
String os_name = System.getProperty("os.name");
if (os_name.toLowerCase().startsWith("win")) {
c1 = "cmd";
c2 = "/c";
}
String cmd = backupConfig.getMysqldumpPath()
+ " -h " + backupConfig.getIp()
+ " -u" + backupConfig.getUsername()
+ " -p" + backupConfig.getPassword()
+ " -P" + backupConfig.getPort()
+ " " + " -A"
+ " > " + fileName;
try {
System.out.println("第一个参数 " + c1);
System.out.println("第二个参数 " + c2);
System.out.println("具体命令 " + cmd);
Process process = Runtime.getRuntime().exec(new String[]{c1, c2, cmd});
process.waitFor();
} catch (Exception e) {
e.printStackTrace();
}
logger.info("执行--数据库备份--定时任务时间: " + LocalDateTime.now());
XxlJobHelper.log("执行--数据库备份--定时任务时间: " + LocalDateTime.now());
}
}