调整定时备份相关
This commit is contained in:
parent
9ac1b9fdf5
commit
19ed3f1b1b
|
|
@ -2,8 +2,10 @@ package com.electromagnetic.industry.software.manage;
|
|||
|
||||
import org.springframework.boot.SpringApplication;
|
||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||
import org.springframework.scheduling.annotation.EnableScheduling;
|
||||
|
||||
@SpringBootApplication
|
||||
@EnableScheduling
|
||||
public class Application {
|
||||
public static void main(String[] args) {
|
||||
SpringApplication.run(Application.class, args);
|
||||
|
|
|
|||
|
|
@ -22,6 +22,7 @@ import com.electromagnetic.industry.software.manage.pojo.models.FileBackupLog;
|
|||
import com.electromagnetic.industry.software.manage.pojo.models.UserAccessLog;
|
||||
import com.electromagnetic.industry.software.manage.service.FileSystemService;
|
||||
import com.electromagnetic.industry.software.manage.service.serviceimpl.CommonService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.scheduling.annotation.Scheduled;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
|
|
@ -33,6 +34,7 @@ import java.util.List;
|
|||
import java.util.stream.Collectors;
|
||||
|
||||
@Component
|
||||
@Slf4j
|
||||
public class BackupTask {
|
||||
|
||||
@Resource
|
||||
|
|
@ -50,7 +52,7 @@ public class BackupTask {
|
|||
@Resource
|
||||
private BackupHandler backupHandler;
|
||||
|
||||
@Scheduled(cron = "0 0 1 * * ?")
|
||||
@Scheduled(cron = "0 0 * * * ?")
|
||||
public void backup() {
|
||||
|
||||
// 首先查看备份失败的文件
|
||||
|
|
@ -158,59 +160,62 @@ public class BackupTask {
|
|||
|
||||
@Scheduled(cron = "0 0 * * * ?")
|
||||
public void backupSql() {
|
||||
String sqlDirs = elePropertyConfig.getSqlDirs();
|
||||
File[] files = new File(sqlDirs).listFiles((file, name) -> name.endsWith(".sql"));
|
||||
File maxModifyTimeFile = null;
|
||||
long tmp = 0;
|
||||
if (ArrayUtil.isEmpty(files)) {
|
||||
return;
|
||||
}
|
||||
for (File file : files) {
|
||||
if (file.lastModified() > tmp) {
|
||||
tmp = file.lastModified();
|
||||
maxModifyTimeFile = file;
|
||||
try {
|
||||
String sqlDirs = elePropertyConfig.getSqlDirs();
|
||||
File[] files = new File(sqlDirs).listFiles((file, name) -> name.endsWith(".sql"));
|
||||
File maxModifyTimeFile = null;
|
||||
long tmp = 0;
|
||||
if (ArrayUtil.isEmpty(files)) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (maxModifyTimeFile == null) {
|
||||
return;
|
||||
}
|
||||
String fileName = maxModifyTimeFile.getName();
|
||||
List<FileBackupLog> fileBackupLogs = fileBackupLogMapper.selectList(Wrappers.<FileBackupLog>lambdaQuery()
|
||||
.eq(FileBackupLog::getFileName, fileName)
|
||||
.eq(FileBackupLog::getSource, FileBackupSource.SQL.code));
|
||||
List<FileBackupLog> successBacks = fileBackupLogs.stream().filter(FileBackupLog::isBackupSuccess).collect(Collectors.toList());
|
||||
if (CollUtil.isNotEmpty(successBacks)) {
|
||||
return;
|
||||
}
|
||||
long startTime = System.currentTimeMillis();
|
||||
BackupFileResLog resLog = backupHandler.backupSql(maxModifyTimeFile.getAbsolutePath());
|
||||
long endTime = System.currentTimeMillis();
|
||||
List<FileBackupLog> failBacks = fileBackupLogs.stream().filter(FileBackupLog::isBackupSuccess).collect(Collectors.toList());
|
||||
if (CollUtil.isEmpty(failBacks)) {
|
||||
FileBackupLog backupLog = new FileBackupLog()
|
||||
.setId(IdWorker.getSnowFlakeIdString())
|
||||
.setFileId(Base64.encode(fileName))
|
||||
.setFileCode(Base64.encode(fileName))
|
||||
.setBackupSuccess(resLog.getBackupSuccess())
|
||||
.setCreateTime(new Date())
|
||||
.setStartTime(startTime)
|
||||
.setEndTime(endTime)
|
||||
.setDuration(endTime - startTime)
|
||||
.setFailInfoDetail(resLog.getFailInfoDetail())
|
||||
.setFileTime(FileUtil.lastModifiedTime(maxModifyTimeFile).getTime())
|
||||
.setFileName(fileName)
|
||||
.setFileCreateTime(FileUtil.lastModifiedTime(maxModifyTimeFile))
|
||||
.setSource(FileBackupSource.SQL.code);
|
||||
fileBackupLogMapper.insert(backupLog);
|
||||
} else {
|
||||
fileBackupLogMapper.update(new FileBackupLog(), Wrappers.<FileBackupLog>lambdaUpdate()
|
||||
.eq(FileBackupLog::getSource, FileBackupSource.SQL.code)
|
||||
for (File file : files) {
|
||||
if (file.lastModified() > tmp) {
|
||||
tmp = file.lastModified();
|
||||
maxModifyTimeFile = file;
|
||||
}
|
||||
}
|
||||
if (maxModifyTimeFile == null) {
|
||||
return;
|
||||
}
|
||||
String fileName = maxModifyTimeFile.getName();
|
||||
List<FileBackupLog> fileBackupLogs = fileBackupLogMapper.selectList(Wrappers.<FileBackupLog>lambdaQuery()
|
||||
.eq(FileBackupLog::getFileName, fileName)
|
||||
.set(FileBackupLog::getFailInfoDetail, resLog.getFailInfoDetail())
|
||||
.set(FileBackupLog::isBackupSuccess, resLog.getBackupSuccess()));
|
||||
}
|
||||
.eq(FileBackupLog::getSource, FileBackupSource.SQL.code));
|
||||
List<FileBackupLog> successBacks = fileBackupLogs.stream().filter(FileBackupLog::isBackupSuccess).collect(Collectors.toList());
|
||||
if (CollUtil.isNotEmpty(successBacks)) {
|
||||
return;
|
||||
}
|
||||
|
||||
long startTime = System.currentTimeMillis();
|
||||
BackupFileResLog resLog = backupHandler.backupSql(maxModifyTimeFile.getAbsolutePath());
|
||||
long endTime = System.currentTimeMillis();
|
||||
List<FileBackupLog> failBacks = fileBackupLogs.stream().filter(FileBackupLog::isBackupSuccess).collect(Collectors.toList());
|
||||
if (CollUtil.isEmpty(failBacks)) {
|
||||
FileBackupLog backupLog = new FileBackupLog()
|
||||
.setId(IdWorker.getSnowFlakeIdString())
|
||||
.setFileId(Base64.encode(fileName))
|
||||
.setFileCode(Base64.encode(fileName))
|
||||
.setBackupSuccess(resLog.getBackupSuccess())
|
||||
.setCreateTime(new Date())
|
||||
.setStartTime(startTime)
|
||||
.setEndTime(endTime)
|
||||
.setDuration(endTime - startTime)
|
||||
.setFailInfoDetail(resLog.getFailInfoDetail())
|
||||
.setFileTime(FileUtil.lastModifiedTime(maxModifyTimeFile).getTime())
|
||||
.setFileName(fileName)
|
||||
.setFileCreateTime(FileUtil.lastModifiedTime(maxModifyTimeFile))
|
||||
.setSource(FileBackupSource.SQL.code);
|
||||
fileBackupLogMapper.insert(backupLog);
|
||||
} else {
|
||||
fileBackupLogMapper.update(new FileBackupLog(), Wrappers.<FileBackupLog>lambdaUpdate()
|
||||
.eq(FileBackupLog::getSource, FileBackupSource.SQL.code)
|
||||
.eq(FileBackupLog::getFileName, fileName)
|
||||
.set(FileBackupLog::getFailInfoDetail, resLog.getFailInfoDetail())
|
||||
.set(FileBackupLog::isBackupSuccess, resLog.getBackupSuccess()));
|
||||
}
|
||||
} catch (Exception e) {
|
||||
log.error("备份SQL文件异常,原因 {}", e.getMessage(), e);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue