任务时间: 2025年06月16日 21:53
任务类型: 功能扩展
模块: Cleanup
状态: ✅ 已完成
为Cleanup模块增加备份到数据库的功能,创建SQL记录表存储生成的INSERT语句,并将数据库备份设置为默认备份方式。
创建新表 kku_cleanup_sql_backups:
更新 BACKUP_TYPE 枚举:
DATABASE = 1 作为数据库备份类型新增 CleanupSqlBackup 模型:
扩展 BackupLogic 类:
backupTableToDatabase 方法generateInsertStatements 方法在 CleanupService 中添加:
getSqlBackups - 获取SQL备份列表getSqlBackupDetail - 获取SQL备份详情getSqlBackupContent - 获取SQL备份内容app/Module/Cleanup/Models/CleanupSqlBackup.php (新增)
app/Module/Cleanup/Enums/BACKUP_TYPE.php (修改)
app/Module/Cleanup/Logics/BackupLogic.php (修改)
app/Module/Cleanup/Services/CleanupService.php (修改)
app/Module/Cleanup/config/cleanup.php (修改)
CREATE TABLE `kku_cleanup_sql_backups` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`backup_id` bigint(20) unsigned NOT NULL,
`table_name` varchar(100) NOT NULL,
`sql_content` longtext NOT NULL,
`records_count` bigint(20) unsigned NOT NULL DEFAULT '0',
`content_size` bigint(20) unsigned NOT NULL DEFAULT '0',
`content_hash` varchar(64) DEFAULT NULL,
`backup_conditions` json DEFAULT NULL,
`created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
KEY `idx_backup_id` (`backup_id`),
KEY `idx_table_name` (`table_name`),
FOREIGN KEY (`backup_id`) REFERENCES `kku_cleanup_backups` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='SQL备份记录表';
// 创建数据库备份(默认方式)
$result = CleanupService::createPlanBackup($planId, [
'backup_type' => 1, // 数据库备份
]);
// 获取SQL备份列表
$backups = CleanupService::getSqlBackups([
'table_name' => 'kku_farm_users',
'min_records' => 100,
]);
// 获取SQL备份内容
$content = CleanupService::getSqlBackupContent($sqlBackupId);
创建了测试SQL文件 test_database_backup.sql:
成功为Cleanup模块增加了数据库备份功能,实现了将INSERT语句直接存储到数据库表中的需求。新功能具有查询快速、管理便捷、安全可靠等优势,已设置为默认备份方式。同时保持了与现有文件备份功能的完全兼容性。