新增在备份SQL时,导出MySQL的数据。

This commit is contained in:
chenxudong 2025-03-18 12:03:45 +08:00
parent 19ed3f1b1b
commit dca641d664
3 changed files with 28 additions and 9 deletions

View File

@ -39,6 +39,10 @@ public class ElePropertyConfig {
@Value("${data.repo.download.path}") @Value("${data.repo.download.path}")
private String repoDownloadPath; private String repoDownloadPath;
@Getter
@Value("${backup.mysql.script.path}")
private String backupMysqlScriptPath;
@Getter @Getter
@Value("${tmp.file.store.days}") @Value("${tmp.file.store.days}")
private int tmpFileStoreDays; private int tmpFileStoreDays;

View File

@ -5,7 +5,9 @@ import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.core.io.FileUtil; import cn.hutool.core.io.FileUtil;
import cn.hutool.core.text.StrFormatter;
import cn.hutool.core.util.ArrayUtil; import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.util.RuntimeUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.electromagnetic.industry.software.common.enums.EleDataTypeEnum; import com.electromagnetic.industry.software.common.enums.EleDataTypeEnum;
@ -29,6 +31,8 @@ import org.springframework.stereotype.Component;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.io.File; import java.io.File;
import java.io.FileFilter; import java.io.FileFilter;
import java.util.Arrays;
import java.util.Comparator;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -161,19 +165,14 @@ public class BackupTask {
@Scheduled(cron = "0 0 * * * ?") @Scheduled(cron = "0 0 * * * ?")
public void backupSql() { public void backupSql() {
try { try {
dumpMysql();
String sqlDirs = elePropertyConfig.getSqlDirs(); String sqlDirs = elePropertyConfig.getSqlDirs();
File[] files = new File(sqlDirs).listFiles((file, name) -> name.endsWith(".sql")); File[] files = new File(sqlDirs).listFiles((file, name) -> name.endsWith(".sql"));
File maxModifyTimeFile = null;
long tmp = 0;
if (ArrayUtil.isEmpty(files)) { if (ArrayUtil.isEmpty(files)) {
return; return;
} }
for (File file : files) {
if (file.lastModified() > tmp) { File maxModifyTimeFile = Arrays.stream(files).filter(File::isFile).filter(File::exists).max(Comparator.comparingLong(File::lastModified)).orElse(null);
tmp = file.lastModified();
maxModifyTimeFile = file;
}
}
if (maxModifyTimeFile == null) { if (maxModifyTimeFile == null) {
return; return;
} }
@ -218,4 +217,19 @@ public class BackupTask {
} }
} }
private void dumpMysql() {
try {
String sqlScript = elePropertyConfig.getBackupMysqlScriptPath();
String command = StrFormatter.format("bash {}", sqlScript);
Process exec = RuntimeUtil.exec(command);
int i = exec.waitFor();
if (i != 0) {
log.warn("导出MySQL数据异常");
}
} catch (Exception e) {
log.warn("导出MySQL数据异常原因 {}", e.getMessage(), e);
}
}
} }

View File

@ -35,4 +35,5 @@ prj.folder.max.length=6
tmp.file.store.days=7 tmp.file.store.days=7
backup.remote.host=127.0.0.1 backup.remote.host=127.0.0.1
backup.remote.port=1111 backup.remote.port=1111
backup.mysql.path=/workspace/mysqlbak/test backup.mysql.path=/workspace/mysqlbak/test
backup.mysql.script.path=/workspace/mysqlbak/back_dev.sh