java中实现数据库备份
java中实现数据库备份1、直接上代码public void backup() {File file = new File(backupConfig.getBackupPath());if (!file.exists()) {file.mkdirs();}String fileName = backupConfig.getBackupPath() + "/" + backFilePrefix +
·
java中实现数据库备份
1、直接上代码
public void backup() {
File file = new File(backupConfig.getBackupPath());
if (!file.exists()) {
file.mkdirs();
}
String fileName = backupConfig.getBackupPath() + "/" + backFilePrefix + LocalDate.now() + ".sql";
/** 默认使用linux*/
//String cmdPrefix = "/bin/sh -c ";
String c1 = "/bin/sh";
String c2 = "-c";
String os_name = System.getProperty("os.name");
// 判断是否是windows系统
if (os_name.toLowerCase().startsWith("win")){
//cmdPrefix = "cmd /c ";
c1 = "cmd";
c2 = "/c";
}
String cmd = backupConfig.getMysqldumpPath() // mysqldump的绝对路径,配置环境变量,直接写mysqldump即可
+ " -u" + backupConfig.getUsername() // 数据库用户名
+ " -p" + backupConfig.getPassword() // 数据库密码
+ " -P" + backupConfig.getPort() // 数据库端口号
+ " " + backupConfig.getDbName() // 数据库名
+ " > " + fileName; // 最终写入的文件路径
try {
System.out.println("第一个参数 " + c1);
System.out.println("第二个参数 " + c2);
System.out.println("具体命令 " + cmd);
log.error("数据库备份START" + LocalDateTime.now());
/**
* exec重载方法有一个参数的,window下执行正常,linux下无法完成备份。
* 使用多参数重载方法都可以正常备份
*/
Process process = Runtime.getRuntime().exec(new String[]{c1, c2, cmd});
process.waitFor();
log.error("数据库备份END" + LocalDateTime.now());
} catch (Exception e) {
e.printStackTrace();
log.error("数据库备份失败:{}", e.getMessage());
}
}
2、定时备份
使用定时任务,调用该方法,就可以实现定时备份数据库了
小尾巴~~
只要有积累,就会有进步
更多推荐
所有评论(0)