|
|
@@ -6,11 +6,10 @@
|
|
|
|
|
|
### 1.1 核心特性
|
|
|
- **自动备份**:清理前自动备份将要删除的数据
|
|
|
-- **多种格式**:支持SQL、JSON、CSV三种备份格式
|
|
|
-- **智能压缩**:自动压缩备份文件,节省存储空间
|
|
|
-- **完整性验证**:MD5哈希验证确保备份文件完整性
|
|
|
+- **数据库存储**:将INSERT语句直接存储到数据库中
|
|
|
+- **完整性验证**:SHA256哈希验证确保备份数据完整性
|
|
|
- **快速恢复**:支持一键恢复备份数据
|
|
|
-- **生命周期管理**:自动清理过期备份文件
|
|
|
+- **生命周期管理**:自动清理过期备份记录
|
|
|
|
|
|
## 2. 备份实现方案
|
|
|
|
|
|
@@ -19,74 +18,44 @@
|
|
|
清理执行流程:
|
|
|
1. 分析清理任务 → 确定需要备份的数据
|
|
|
2. 创建备份计划 → 生成备份任务列表
|
|
|
-3. 执行数据备份 → 按表分别备份数据
|
|
|
-4. 压缩备份文件 → 减少存储空间占用
|
|
|
-5. 验证备份完整性 → 确保备份文件可用
|
|
|
-6. 记录备份信息 → 保存备份元数据
|
|
|
-7. 执行清理操作 → 在备份完成后执行清理
|
|
|
+3. 执行数据备份 → 将数据以INSERT语句形式存储到数据库
|
|
|
+4. 验证备份完整性 → 确保备份数据完整
|
|
|
+5. 记录备份信息 → 保存备份元数据
|
|
|
+6. 执行清理操作 → 在备份完成后执行清理
|
|
|
```
|
|
|
|
|
|
-### 2.2 备份格式
|
|
|
+### 2.2 数据库备份格式
|
|
|
|
|
|
-#### SQL备份
|
|
|
-- **优点**:包含完整的表结构和数据,恢复最可靠
|
|
|
-- **适用场景**:重要数据的完整备份
|
|
|
-- **文件示例**:
|
|
|
+#### 数据库备份
|
|
|
+- **优点**:查询快速、无文件管理、事务安全、备份可靠
|
|
|
+- **适用场景**:所有数据的备份存储
|
|
|
+- **存储示例**:
|
|
|
```sql
|
|
|
--- 备份文件: kku_farm_users
|
|
|
--- 创建时间: 2024-12-16 14:30:22
|
|
|
+-- 存储在 cleanup_sql_backups 表中的备份内容
|
|
|
+-- 表名: kku_farm_users
|
|
|
+-- 备份时间: 2024-12-16 14:30:22
|
|
|
|
|
|
+-- 表结构信息
|
|
|
CREATE TABLE `kku_farm_users` (
|
|
|
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
|
|
|
`user_id` bigint(20) NOT NULL,
|
|
|
-- ... 表结构
|
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
|
|
|
+-- 数据INSERT语句
|
|
|
INSERT INTO `kku_farm_users` (`id`, `user_id`, `house_level`, `created_at`) VALUES
|
|
|
(1, 1001, 5, '2024-01-01 10:00:00'),
|
|
|
(2, 1002, 3, '2024-01-02 11:00:00');
|
|
|
```
|
|
|
|
|
|
-#### JSON备份
|
|
|
-- **优点**:结构化数据,易于解析和处理
|
|
|
-- **适用场景**:需要程序化处理的数据备份
|
|
|
-- **文件示例**:
|
|
|
-```json
|
|
|
-{
|
|
|
- "table_name": "kku_farm_users",
|
|
|
- "backup_time": "2024-12-16 14:30:22",
|
|
|
- "conditions": {"time_field": "created_at", "before": "2024-01-01"},
|
|
|
- "records": [
|
|
|
- {"id": 1, "user_id": 1001, "house_level": 5},
|
|
|
- {"id": 2, "user_id": 1002, "house_level": 3}
|
|
|
- ]
|
|
|
-}
|
|
|
-```
|
|
|
-
|
|
|
-#### CSV备份
|
|
|
-- **优点**:文件小,处理速度快
|
|
|
-- **适用场景**:大数据量的快速备份
|
|
|
-- **文件示例**:
|
|
|
-```csv
|
|
|
-id,user_id,house_level,created_at
|
|
|
-1,1001,5,"2024-01-01 10:00:00"
|
|
|
-2,1002,3,"2024-01-02 11:00:00"
|
|
|
-```
|
|
|
-
|
|
|
-### 2.3 压缩机制
|
|
|
-
|
|
|
-#### Gzip压缩
|
|
|
-```php
|
|
|
-// 压缩率:通常可达到70-80%的压缩率
|
|
|
-// 兼容性:广泛支持,Linux系统原生支持
|
|
|
-// 示例:farm_users_143022_abc123.sql.gz
|
|
|
-```
|
|
|
+### 2.3 数据库存储优势
|
|
|
|
|
|
-#### Zip压缩
|
|
|
+#### 存储优化
|
|
|
```php
|
|
|
-// 压缩率:略低于gzip,但支持多文件打包
|
|
|
-// 兼容性:Windows和Linux都支持
|
|
|
-// 示例:backup_143022_abc123.zip
|
|
|
+// 自动优化:数据库自动优化存储,无需额外压缩
|
|
|
+// 查询快速:直接存储在数据库中,查询和检索非常快速
|
|
|
+// 事务安全:利用数据库事务保证数据一致性
|
|
|
+// 备份可靠:随数据库一起备份,不会单独丢失
|
|
|
```
|
|
|
|
|
|
## 3. 数据库设计
|
|
|
@@ -96,24 +65,23 @@ id,user_id,house_level,created_at
|
|
|
-- 存储备份的基本信息
|
|
|
kku_cleanup_backups
|
|
|
├── backup_name # 备份名称
|
|
|
-├── backup_type # 备份格式(SQL/JSON/CSV)
|
|
|
-├── compression_type # 压缩类型(gzip/zip/none)
|
|
|
-├── backup_path # 备份文件路径
|
|
|
-├── backup_size # 压缩后文件大小
|
|
|
-├── original_size # 原始数据大小
|
|
|
-├── backup_hash # 文件MD5哈希
|
|
|
+├── backup_type # 备份类型(固定为数据库备份)
|
|
|
+├── tables_count # 备份表数量
|
|
|
+├── records_count # 备份记录数量
|
|
|
+├── backup_status # 备份状态
|
|
|
└── expires_at # 备份过期时间
|
|
|
```
|
|
|
|
|
|
-### 3.2 备份文件表
|
|
|
+### 3.2 SQL备份记录表
|
|
|
```sql
|
|
|
--- 存储每个表的备份文件详情
|
|
|
-kku_cleanup_backup_files
|
|
|
+-- 存储每个表的SQL备份内容
|
|
|
+kku_cleanup_sql_backups
|
|
|
├── backup_id # 关联备份记录
|
|
|
├── table_name # 表名
|
|
|
-├── file_path # 文件路径
|
|
|
+├── sql_content # INSERT语句内容
|
|
|
├── records_count # 备份记录数
|
|
|
-├── file_hash # 文件哈希
|
|
|
+├── content_size # 内容大小(字节)
|
|
|
+├── content_hash # 内容SHA256哈希
|
|
|
└── backup_conditions # 备份条件
|
|
|
```
|
|
|
|
|
|
@@ -133,8 +101,8 @@ php artisan cleanup:execute 1
|
|
|
|
|
|
### 4.2 手动备份
|
|
|
```bash
|
|
|
-# 为特定任务创建备份
|
|
|
-php artisan cleanup:backup 1 --type=sql --compression=gzip
|
|
|
+# 为特定任务创建数据库备份
|
|
|
+php artisan cleanup:backup 1
|
|
|
|
|
|
# 验证备份完整性
|
|
|
php artisan cleanup:verify-backup 123
|
|
|
@@ -150,7 +118,7 @@ php artisan cleanup:restore 123 --force
|
|
|
|
|
|
// 功能包括:
|
|
|
// - 查看备份列表
|
|
|
-// - 下载备份文件
|
|
|
+// - 查看备份内容
|
|
|
// - 验证备份完整性
|
|
|
// - 恢复备份数据
|
|
|
// - 删除过期备份
|
|
|
@@ -159,16 +127,16 @@ php artisan cleanup:restore 123 --force
|
|
|
## 5. 安全保障
|
|
|
|
|
|
### 5.1 数据完整性
|
|
|
-- **MD5哈希验证**:每个备份文件都有MD5哈希值
|
|
|
+- **SHA256哈希验证**:每个备份内容都有SHA256哈希值
|
|
|
- **分批备份**:大表采用分批备份,避免内存溢出
|
|
|
- **事务保护**:备份过程使用数据库事务保护
|
|
|
-- **错误恢复**:备份失败时自动清理临时文件
|
|
|
+- **错误恢复**:备份失败时自动回滚事务
|
|
|
|
|
|
### 5.2 存储安全
|
|
|
-- **路径隔离**:备份文件存储在专门的目录中
|
|
|
-- **权限控制**:备份文件设置适当的文件权限
|
|
|
-- **定期清理**:自动清理过期的备份文件
|
|
|
-- **空间监控**:监控备份存储空间使用情况
|
|
|
+- **数据库存储**:备份数据存储在数据库中,安全可靠
|
|
|
+- **权限控制**:基于数据库权限控制访问
|
|
|
+- **定期清理**:自动清理过期的备份记录
|
|
|
+- **空间监控**:监控备份数据存储空间使用情况
|
|
|
|
|
|
### 5.3 操作安全
|
|
|
- **权限验证**:只有授权用户可以操作备份
|
|
|
@@ -181,14 +149,14 @@ php artisan cleanup:restore 123 --force
|
|
|
### 6.1 备份性能
|
|
|
- **分批处理**:大表分批备份,避免长时间锁表
|
|
|
- **并行备份**:多个表可以并行备份
|
|
|
-- **压缩优化**:选择合适的压缩算法和级别
|
|
|
-- **I/O优化**:优化文件读写操作
|
|
|
+- **数据库优化**:利用数据库自身的存储优化
|
|
|
+- **内存优化**:优化内存使用,避免内存溢出
|
|
|
|
|
|
### 6.2 存储优化
|
|
|
- **增量备份**:只备份变更的数据(未来版本)
|
|
|
-- **重复数据删除**:识别和删除重复的备份文件
|
|
|
-- **分层存储**:新备份存储在快速存储,旧备份迁移到慢速存储
|
|
|
-- **压缩率优化**:根据数据特征选择最佳压缩方式
|
|
|
+- **重复数据删除**:识别和删除重复的备份记录
|
|
|
+- **数据库存储**:利用数据库自动优化存储
|
|
|
+- **查询优化**:优化备份数据的查询性能
|
|
|
|
|
|
## 7. 监控和维护
|
|
|
|
|
|
@@ -196,9 +164,9 @@ php artisan cleanup:restore 123 --force
|
|
|
```php
|
|
|
// 备份状态监控
|
|
|
- 备份成功率统计
|
|
|
-- 备份文件大小趋势
|
|
|
+- 备份数据大小趋势
|
|
|
- 备份时间性能分析
|
|
|
-- 存储空间使用监控
|
|
|
+- 数据库存储空间使用监控
|
|
|
```
|
|
|
|
|
|
### 7.2 自动维护
|
|
|
@@ -219,13 +187,11 @@ php artisan cleanup:backup-report
|
|
|
```php
|
|
|
// config/cleanup.php
|
|
|
'backup' => [
|
|
|
- 'default_type' => 'sql', // 默认备份格式
|
|
|
- 'compression' => 'gzip', // 默认压缩方式
|
|
|
+ 'type' => 'database', // 备份类型(固定为数据库备份)
|
|
|
'retention_days' => 30, // 备份保留天数
|
|
|
'batch_size' => 1000, // 分批处理大小
|
|
|
- 'max_file_size' => 500, // 最大文件大小(MB)
|
|
|
- 'storage_path' => 'cleanup/backups', // 存储路径
|
|
|
'auto_cleanup' => true, // 自动清理过期备份
|
|
|
+ 'max_records_per_statement' => 100, // 生成INSERT语句时的最大记录数
|
|
|
]
|
|
|
```
|
|
|
|
|
|
@@ -233,7 +199,6 @@ php artisan cleanup:backup-report
|
|
|
```php
|
|
|
'performance' => [
|
|
|
'parallel_backups' => 3, // 并行备份数量
|
|
|
- 'compression_level' => 6, // 压缩级别(1-9)
|
|
|
'memory_limit' => '512M', // 内存限制
|
|
|
'timeout' => 3600, // 超时时间(秒)
|
|
|
]
|
|
|
@@ -256,7 +221,7 @@ php artisan cleanup:backup-report
|
|
|
```
|
|
|
备份失败处理:
|
|
|
- 备份失败 → 停止清理操作
|
|
|
-- 清理失败 → 保留备份文件
|
|
|
+- 清理失败 → 保留备份数据
|
|
|
- 验证失败 → 重新创建备份
|
|
|
- 恢复失败 → 记录错误日志
|
|
|
```
|
|
|
@@ -272,9 +237,9 @@ Cleanup 模块的备份功能提供了完整的数据保护机制:
|
|
|
- **可靠性**:多重验证确保备份文件可用
|
|
|
|
|
|
### 10.2 技术优势
|
|
|
-- **多格式支持**:适应不同场景的备份需求
|
|
|
-- **智能压缩**:节省存储空间和传输时间
|
|
|
-- **完整性保证**:哈希验证确保数据完整性
|
|
|
-- **生命周期管理**:自动化的备份文件管理
|
|
|
+- **数据库存储**:专注于数据库备份,架构简单清晰
|
|
|
+- **查询快速**:备份数据存储在数据库中,查询和检索非常快速
|
|
|
+- **完整性保证**:SHA256哈希验证确保数据完整性
|
|
|
+- **生命周期管理**:自动化的备份记录管理
|
|
|
|
|
|
-这个备份系统不仅满足了数据安全的基本需求,还提供了专业级的备份管理功能,确保Cleanup模块在提供强大清理能力的同时,也能保证数据的绝对安全。
|
|
|
+这个备份系统专注于数据库备份,提供了完整的数据保护机制,确保Cleanup模块在提供强大清理能力的同时,也能保证数据的绝对安全。
|