调整定时备份相关
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.SpringApplication;
|
||||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||||
|
import org.springframework.scheduling.annotation.EnableScheduling;
|
||||||
|
|
||||||
@SpringBootApplication
|
@SpringBootApplication
|
||||||
|
@EnableScheduling
|
||||||
public class Application {
|
public class Application {
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
SpringApplication.run(Application.class, 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.pojo.models.UserAccessLog;
|
||||||
import com.electromagnetic.industry.software.manage.service.FileSystemService;
|
import com.electromagnetic.industry.software.manage.service.FileSystemService;
|
||||||
import com.electromagnetic.industry.software.manage.service.serviceimpl.CommonService;
|
import com.electromagnetic.industry.software.manage.service.serviceimpl.CommonService;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.scheduling.annotation.Scheduled;
|
import org.springframework.scheduling.annotation.Scheduled;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
|
@ -33,6 +34,7 @@ import java.util.List;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
@Component
|
@Component
|
||||||
|
@Slf4j
|
||||||
public class BackupTask {
|
public class BackupTask {
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
|
|
@ -50,7 +52,7 @@ public class BackupTask {
|
||||||
@Resource
|
@Resource
|
||||||
private BackupHandler backupHandler;
|
private BackupHandler backupHandler;
|
||||||
|
|
||||||
@Scheduled(cron = "0 0 1 * * ?")
|
@Scheduled(cron = "0 0 * * * ?")
|
||||||
public void backup() {
|
public void backup() {
|
||||||
|
|
||||||
// 首先查看备份失败的文件
|
// 首先查看备份失败的文件
|
||||||
|
|
@ -158,59 +160,62 @@ public class BackupTask {
|
||||||
|
|
||||||
@Scheduled(cron = "0 0 * * * ?")
|
@Scheduled(cron = "0 0 * * * ?")
|
||||||
public void backupSql() {
|
public void backupSql() {
|
||||||
String sqlDirs = elePropertyConfig.getSqlDirs();
|
try {
|
||||||
File[] files = new File(sqlDirs).listFiles((file, name) -> name.endsWith(".sql"));
|
String sqlDirs = elePropertyConfig.getSqlDirs();
|
||||||
File maxModifyTimeFile = null;
|
File[] files = new File(sqlDirs).listFiles((file, name) -> name.endsWith(".sql"));
|
||||||
long tmp = 0;
|
File maxModifyTimeFile = null;
|
||||||
if (ArrayUtil.isEmpty(files)) {
|
long tmp = 0;
|
||||||
return;
|
if (ArrayUtil.isEmpty(files)) {
|
||||||
}
|
return;
|
||||||
for (File file : files) {
|
|
||||||
if (file.lastModified() > tmp) {
|
|
||||||
tmp = file.lastModified();
|
|
||||||
maxModifyTimeFile = file;
|
|
||||||
}
|
}
|
||||||
}
|
for (File file : files) {
|
||||||
|
if (file.lastModified() > tmp) {
|
||||||
if (maxModifyTimeFile == null) {
|
tmp = file.lastModified();
|
||||||
return;
|
maxModifyTimeFile = file;
|
||||||
}
|
}
|
||||||
String fileName = maxModifyTimeFile.getName();
|
}
|
||||||
List<FileBackupLog> fileBackupLogs = fileBackupLogMapper.selectList(Wrappers.<FileBackupLog>lambdaQuery()
|
if (maxModifyTimeFile == null) {
|
||||||
.eq(FileBackupLog::getFileName, fileName)
|
return;
|
||||||
.eq(FileBackupLog::getSource, FileBackupSource.SQL.code));
|
}
|
||||||
List<FileBackupLog> successBacks = fileBackupLogs.stream().filter(FileBackupLog::isBackupSuccess).collect(Collectors.toList());
|
String fileName = maxModifyTimeFile.getName();
|
||||||
if (CollUtil.isNotEmpty(successBacks)) {
|
List<FileBackupLog> fileBackupLogs = fileBackupLogMapper.selectList(Wrappers.<FileBackupLog>lambdaQuery()
|
||||||
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)
|
.eq(FileBackupLog::getFileName, fileName)
|
||||||
.set(FileBackupLog::getFailInfoDetail, resLog.getFailInfoDetail())
|
.eq(FileBackupLog::getSource, FileBackupSource.SQL.code));
|
||||||
.set(FileBackupLog::isBackupSuccess, resLog.getBackupSuccess()));
|
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