重构数据库备份与恢复模块 (#80)

* fix: 保存 LastResult 时截断字符串过长部分,以避免数据库报错

* refactor: 新增 entity.DbTaskBase 和 persistence.dbTaskBase, 用于实现数据库备份和恢复任务处理相关部分

* fix: aeskey变更后,解密密码出现数组越界访问错误

* fix: 时间属性为零值时,保存到 mysql 数据库报错

* refactor db.infrastructure.service.scheduler

* feat: 实现立即备份功能

* refactor db.infrastructure.service.db_instance

* refactor: 从数据库中获取数据库备份目录、mysql文件路径等配置信息

* fix: 数据库备份和恢复问题

* fix: 修改 .gitignore 文件,忽略数据库备份目录和数据库程序目录
This commit is contained in:
kanzihuang
2024-01-05 08:55:34 +08:00
committed by GitHub
parent 76fd6675b5
commit ae3d2659aa
83 changed files with 1819 additions and 1688 deletions

View File

@@ -479,6 +479,8 @@ INSERT INTO `t_sys_config` (name, `key`, params, value, remark, permission, crea
INSERT INTO `t_sys_config` (name, `key`, params, value, remark, create_time, creator_id, creator, update_time, modifier_id, modifier)VALUES ('数据库查询最大结果集', 'DbQueryMaxCount', '[]', '200', '允许sql查询的最大结果集数。注: 0=不限制', '2023-02-11 14:29:03', 1, 'admin', '2023-02-11 14:40:56', 1, 'admin');
INSERT INTO `t_sys_config` (name, `key`, params, value, remark, create_time, creator_id, creator, update_time, modifier_id, modifier)VALUES ('数据库是否记录查询SQL', 'DbSaveQuerySQL', '[]', '0', '1: 记录、0:不记录', '2023-02-11 16:07:14', 1, 'admin', '2023-02-11 16:44:17', 1, 'admin');
INSERT INTO `t_sys_config` (name, `key`, params, value, remark, permission, create_time, creator_id, creator, update_time, modifier_id, modifier, is_deleted, delete_time) VALUES('机器相关配置', 'MachineConfig', '[{"name":"终端回放存储路径","model":"terminalRecPath","placeholder":"终端回放存储路径"},{"name":"uploadMaxFileSize","model":"uploadMaxFileSize","placeholder":"允许上传的最大文件大小(1MB\\\\2GB等)"}]', '{"terminalRecPath":"./rec","uploadMaxFileSize":"1GB"}', '机器相关配置,如终端回放路径等', 'admin,', '2023-07-13 16:26:44', 1, 'admin', '2023-11-09 22:01:31', 1, 'admin', 0, NULL);
INSERT INTO `t_sys_config` (`name`, `key`, `params`, `value`, `remark`, `permission`, `create_time`, `creator_id`, `creator`, `update_time`, `modifier_id`, `modifier`, `is_deleted`, `delete_time`) VALUES('Mysql可执行文件', 'MysqlBin', '[{"model":"path","name":"路径","placeholder":"可执行文件路径","required":true},{"model":"mysql","name":"mysql","placeholder":"mysql命令路径(空则为 路径/mysql)","required":false},{"model":"mysqldump","name":"mysqldump","placeholder":"mysqldump命令路径(空则为 路径/mysqldump)","required":false},{"model":"mysqlbinlog","name":"mysqlbinlog","placeholder":"mysqlbinlog命令路径(空则为 路径/mysqlbinlog)","required":false}]', '{"mysql":"","mysqldump":"","mysqlbinlog":"","path":""}', '', 'admin,', '2023-12-29 10:01:33', 1, 'admin', '2023-12-29 13:34:40', 1, 'admin', 0, NULL);
INSERT INTO `t_sys_config` (`name`, `key`, `params`, `value`, `remark`, `permission`, `create_time`, `creator_id`, `creator`, `update_time`, `modifier_id`, `modifier`, `is_deleted`, `delete_time`) VALUES('数据库备份恢复', 'DbBackupRestore', '[{"model":"backupPath","name":"备份路径","placeholder":"备份文件存储路径"}]', '{"backupPath":"./db/backup"}', '', 'admin,', '2023-12-29 09:55:26', 1, 'admin', '2023-12-29 15:45:24', 1, 'admin', 0, NULL);
COMMIT;
-- ----------------------------
@@ -865,7 +867,6 @@ CREATE TABLE `t_db_backup` (
`interval` bigint(20) DEFAULT NULL COMMENT '备份周期',
`start_time` datetime DEFAULT NULL COMMENT '首次备份时间',
`enabled` tinyint(1) DEFAULT NULL COMMENT '是否启用',
`finished` tinyint(1) DEFAULT NULL COMMENT '是否完成',
`last_status` tinyint(4) DEFAULT NULL COMMENT '上次备份状态',
`last_result` varchar(256) DEFAULT NULL COMMENT '上次备份结果',
`last_time` datetime DEFAULT NULL COMMENT '上次备份时间',
@@ -917,7 +918,6 @@ CREATE TABLE `t_db_restore` (
`interval` bigint(20) DEFAULT NULL COMMENT '恢复周期',
`start_time` datetime DEFAULT NULL COMMENT '首次恢复时间',
`enabled` tinyint(1) DEFAULT NULL COMMENT '是否启用',
`finished` tinyint(1) DEFAULT NULL COMMENT '是否完成',
`last_status` tinyint(4) DEFAULT NULL COMMENT '上次恢复状态',
`last_result` varchar(256) DEFAULT NULL COMMENT '上次恢复结果',
`last_time` datetime DEFAULT NULL COMMENT '上次恢复时间',
@@ -959,9 +959,6 @@ DROP TABLE IF EXISTS `t_db_binlog`;
CREATE TABLE `t_db_binlog` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`db_instance_id` bigint(20) unsigned NOT NULL COMMENT '数据库实例ID',
`interval` bigint(20) DEFAULT NULL COMMENT '下载周期',
`start_time` datetime DEFAULT NULL COMMENT '首次下载时间',
`enabled` tinyint(1) DEFAULT NULL COMMENT '会否启用',
`last_status` bigint(20) DEFAULT NULL COMMENT '上次下载状态',
`last_result` varchar(256) DEFAULT NULL COMMENT '上次下载结果',
`last_time` datetime DEFAULT NULL COMMENT '上次下载时间',

View File

@@ -11,7 +11,6 @@ CREATE TABLE `t_db_backup` (
`interval` bigint(20) DEFAULT NULL COMMENT '备份周期',
`start_time` datetime DEFAULT NULL COMMENT '首次备份时间',
`enabled` tinyint(1) DEFAULT NULL COMMENT '是否启用',
`finished` tinyint(1) DEFAULT NULL COMMENT '是否完成',
`last_status` tinyint(4) DEFAULT NULL COMMENT '上次备份状态',
`last_result` varchar(256) DEFAULT NULL COMMENT '上次备份结果',
`last_time` datetime DEFAULT NULL COMMENT '上次备份时间',
@@ -63,7 +62,6 @@ CREATE TABLE `t_db_restore` (
`interval` bigint(20) DEFAULT NULL COMMENT '恢复周期',
`start_time` datetime DEFAULT NULL COMMENT '首次恢复时间',
`enabled` tinyint(1) DEFAULT NULL COMMENT '是否启用',
`finished` tinyint(1) DEFAULT NULL COMMENT '是否完成',
`last_status` tinyint(4) DEFAULT NULL COMMENT '上次恢复状态',
`last_result` varchar(256) DEFAULT NULL COMMENT '上次恢复结果',
`last_time` datetime DEFAULT NULL COMMENT '上次恢复时间',
@@ -105,9 +103,6 @@ DROP TABLE IF EXISTS `t_db_binlog`;
CREATE TABLE `t_db_binlog` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`db_instance_id` bigint(20) unsigned NOT NULL COMMENT '数据库实例ID',
`interval` bigint(20) DEFAULT NULL COMMENT '下载周期',
`start_time` datetime DEFAULT NULL COMMENT '首次下载时间',
`enabled` tinyint(1) DEFAULT NULL COMMENT '会否启用',
`last_status` bigint(20) DEFAULT NULL COMMENT '上次下载状态',
`last_result` varchar(256) DEFAULT NULL COMMENT '上次下载结果',
`last_time` datetime DEFAULT NULL COMMENT '上次下载时间',
@@ -140,3 +135,7 @@ CREATE TABLE `t_db_binlog_history` (
PRIMARY KEY (`id`),
KEY `idx_db_instance_id` (`db_instance_id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
INSERT INTO `t_sys_config` (`name`, `key`, `params`, `value`, `remark`, `permission`, `create_time`, `creator_id`, `creator`, `update_time`, `modifier_id`, `modifier`, `is_deleted`, `delete_time`) VALUES('Mysql可执行文件', 'MysqlBin', '[{"model":"path","name":"路径","placeholder":"可执行文件路径","required":true},{"model":"mysql","name":"mysql","placeholder":"mysql命令路径(空则为 路径/mysql)","required":false},{"model":"mysqldump","name":"mysqldump","placeholder":"mysqldump命令路径(空则为 路径/mysqldump)","required":false},{"model":"mysqlbinlog","name":"mysqlbinlog","placeholder":"mysqlbinlog命令路径(空则为 路径/mysqlbinlog)","required":false}]', '{"mysql":"","mysqldump":"","mysqlbinlog":"","path":""}', '', 'admin,', '2023-12-29 10:01:33', 1, 'admin', '2023-12-29 13:34:40', 1, 'admin', 0, NULL);
INSERT INTO `t_sys_config` (`name`, `key`, `params`, `value`, `remark`, `permission`, `create_time`, `creator_id`, `creator`, `update_time`, `modifier_id`, `modifier`, `is_deleted`, `delete_time`) VALUES('数据库备份恢复', 'DbBackupRestore', '[{"model":"backupPath","name":"备份路径","placeholder":"备份文件存储路径"}]', '{"backupPath":"./db/backup"}', '', 'admin,', '2023-12-29 09:55:26', 1, 'admin', '2023-12-29 15:45:24', 1, 'admin', 0, NULL);