杜洪波
2025-06-19 5fea45398f0fa88fef4008e6ec9443eef3d515d2
系统备份(日志版,读取最后次成功的日志时间,进行增量备份)
已修改2个文件
66 ■■■■■ 文件已修改
.classpath 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/product/system/backup/service/SystemBackupService.java 55 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.classpath
@@ -6,20 +6,9 @@
            <attribute name="maven.pomderived" value="true"/>
        </attributes>
    </classpathentry>
    <classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources">
        <attributes>
            <attribute name="maven.pomderived" value="true"/>
        </attributes>
    </classpathentry>
    <classpathentry kind="src" output="target/test-classes" path="src/test/java">
        <attributes>
            <attribute name="optional" value="true"/>
            <attribute name="maven.pomderived" value="true"/>
            <attribute name="test" value="true"/>
        </attributes>
    </classpathentry>
    <classpathentry excluding="**" kind="src" output="target/test-classes" path="src/test/resources">
        <attributes>
            <attribute name="maven.pomderived" value="true"/>
            <attribute name="test" value="true"/>
        </attributes>
src/main/java/com/product/system/backup/service/SystemBackupService.java
@@ -71,22 +71,15 @@
        // 获取系统时间
        Date finalTime = new Date();
        Date startTime = null;
        // 获取系统备份周期(分钟)
        int backupCycle = Integer.valueOf(Global.getSystemConfig("SYSTEM_BACK_CYCLE", "1440"));
        // 获取系统最大备份时间
        StringBuilder sbSql = new StringBuilder();
        sbSql.append("SELECT TIMESTAMPDIFF(MINUTE, end_time, ?) AS diff_minutes,end_time \n");
        sbSql.append("SELECT end_time \n");
        sbSql.append("FROM product_sys_backup_log \n");
        sbSql.append("WHERE backup_status = 1 \n");
        sbSql.append("ORDER BY end_time DESC \n");
        sbSql.append("LIMIT 1 \n");
        FieldSetEntity fseMaxLogTime = baseDao.getFieldSetEntityBySQL(sbSql.toString(), new Object[] {standardTimeFormat.format(finalTime)}, false);
        if(fseMaxLogTime != null && !StringUtils.isEmpty(fseMaxLogTime.getString("diff_minutes"))) {
            Integer diffMinutes = fseMaxLogTime.getInteger("diff_minutes");
            if (diffMinutes < backupCycle) {
                // 小于备份周期,不备份
                return ;
            }
        FieldSetEntity fseMaxLogTime = baseDao.getFieldSetEntityBySQL(sbSql.toString(), new Object[] {}, false);
        if(fseMaxLogTime != null && !StringUtils.isEmpty(fseMaxLogTime.getString("end_time"))) {
            startTime = fseMaxLogTime.getDate("end_time");
        }
        // 初始备份日志数据
@@ -104,6 +97,43 @@
        // 保存日志
        baseDao.saveFieldSetEntity(fseBackLog);
    }
//    public void systemBackupInit() {
//        // 获取系统时间
//        Date finalTime = new Date();
//        Date startTime = null;
//        // 获取系统备份周期(分钟)
//        int backupCycle = Integer.valueOf(Global.getSystemConfig("SYSTEM_BACK_CYCLE", "1440"));
//        // 获取系统最大备份时间
//        StringBuilder sbSql = new StringBuilder();
//        sbSql.append("SELECT TIMESTAMPDIFF(MINUTE, end_time, ?) AS diff_minutes,end_time \n");
//        sbSql.append("FROM product_sys_backup_log \n");
//        sbSql.append("WHERE backup_status = 1 \n");
//        sbSql.append("ORDER BY end_time DESC \n");
//        sbSql.append("LIMIT 1 \n");
//        FieldSetEntity fseMaxLogTime = baseDao.getFieldSetEntityBySQL(sbSql.toString(), new Object[] {standardTimeFormat.format(finalTime)}, false);
//        if(fseMaxLogTime != null && !StringUtils.isEmpty(fseMaxLogTime.getString("diff_minutes"))) {
//            Integer diffMinutes = fseMaxLogTime.getInteger("diff_minutes");
//            if (diffMinutes < backupCycle) {
//                // 小于备份周期,不备份
//                return ;
//            }
//            startTime = fseMaxLogTime.getDate("end_time");
//        }
//        // 初始备份日志数据
//        FieldSetEntity fseBackLog = new FieldSetEntity("product_sys_backup_log");
//        fseBackLog.setValue("start_time", startTime);
//        fseBackLog.setValue("end_time", finalTime);
//
//        // 执行备份
//        boolean flag = backupProcess(startTime, finalTime);
//        if (flag) {
//            fseBackLog.setValue("backup_status", 1);
//        } else {
//            fseBackLog.setValue("backup_status", 0);
//        }
//        // 保存日志
//        baseDao.saveFieldSetEntity(fseBackLog);
//    }
    
    /**
@@ -274,12 +304,13 @@
            } else {
                log.writeInfo("【备份数据库】数据库备份失败,退出码: " + exitCode, BackupLogger.ERROR_TYPE);
            }
            return true;
        } catch (Exception e) {
            e.printStackTrace();
            log.writeInfo("【备份数据库】数据库备份失败:" + e.getMessage(), BackupLogger.ERROR_TYPE);
            backupFile.delete();
            return false;
        }
        return true;
        }
    }
    /**