数据库备份基础框架构建

This commit is contained in:
diantu
2023-03-08 18:19:38 +08:00
parent 4b0ec31e6f
commit 353bc4ae97
11 changed files with 742 additions and 94 deletions

View File

@@ -0,0 +1,93 @@
package com.zyplayer.doc.data.repository.manage.entity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.Date;
/**
* 备份记录信息
*
* @author diantu
* @since 2023年3月3日
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("backup_log")
public class BackupLog implements Serializable {
/**
* 主键
*/
@TableId(value = "id", type = IdType.AUTO)
private Long id;
/**
* 数据源id
*/
private Long dbId;
/**
* 来源(手动备份|自动备份)
*/
private String category;
/**
* 库名
*/
private String databaseName;
/**
* 表名
*/
private String tablesName;
/**
* 备份方式
*/
private Integer dataType;
/**
* 是否压缩
*/
private Boolean isCompress;
/**
* 是否上传
*/
private Boolean isUpload;
/**
* 是否删除
*/
private Boolean isDelete;
/**
* 文件路径
*/
private String filePath;
/**
* 文件大小
*/
private Long fileSize;
/**
* 备份状态(-1-失败0-备份中1-上传中200-成功)
*/
private Integer status;
/**
* 备份信息
*/
private String msg;
/**
* 开始时间
*/
private Date startTime;
/**
* 结束时间
*/
private Date endTime;
/**
* 耗时(ms)
*/
private Long spendTime;
/**
* 删除状态0--未删除1--已删除)
*/
private Integer delFlag;
}

View File

@@ -0,0 +1,66 @@
package com.zyplayer.doc.data.repository.manage.entity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.Date;
/**
* 备份任务信息
*
* @author diantu
* @since 2023年3月3日
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName(value = "backup_task", autoResultMap = true)
public class BackupTask implements Serializable {
@TableId(value = "id", type = IdType.AUTO)
private Long id;
/**
* 数据源id
*/
private Long dbId;
/**
* cron表达式
*/
private String cron;
/**
* 参数
*/
private String param;
/**
* 状态0-停止1-启动)
*/
private Boolean status;
/**
* 库名
*/
private String databaseName;
/**
* 表名
*/
private String tablesName;
/**
* 备份方式
*/
private Integer dataType;
/**
* 备注
*/
private String remark;
/**
* 创建时间
*/
private Date createTime;
/**
* 删除状态0--未删除1--已删除)
*/
private Integer delFlag;
}

View File

@@ -0,0 +1,43 @@
package com.zyplayer.doc.data.utils;
import lombok.extern.slf4j.Slf4j;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
/**
* 创建一个线程类来不停地来读出Process调用脚本的输出数据防止缓冲区被缓冲数据塞满而线程阻塞
* @author diantu
* @since 2023年3月3日
*/
@Slf4j
public class CleanInputCache extends Thread{
private final String type;
private final String charSet;
private final StringBuilder msg;
private final InputStream inputStream;
public CleanInputCache(InputStream inputStream, String type, String charSet, StringBuilder msg) {
this.type = type;
this.msg = msg;
this.charSet = charSet;
this.inputStream = inputStream;
}
public void run() {
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream, charSet));
String line = null;
while ((line = reader.readLine()) != null) {
if ("error".equals(type)) {
msg.append(line);
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
}