数据库备份基础框架构建
This commit is contained in:
@@ -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;
|
||||
|
||||
}
|
||||
@@ -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;
|
||||
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user