test_database_backup.sql 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. -- 测试数据库备份功能的SQL语句
  2. -- 1. 创建SQL备份记录表
  3. CREATE TABLE IF NOT EXISTS `kku_cleanup_sql_backups` (
  4. `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  5. `backup_id` bigint(20) unsigned NOT NULL COMMENT '关联备份记录ID',
  6. `table_name` varchar(100) NOT NULL COMMENT '表名',
  7. `sql_content` longtext NOT NULL COMMENT 'INSERT语句内容',
  8. `records_count` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '记录数量',
  9. `content_size` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '内容大小(字节)',
  10. `content_hash` varchar(64) DEFAULT NULL COMMENT '内容SHA256哈希',
  11. `backup_conditions` json DEFAULT NULL COMMENT '备份条件',
  12. `created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  13. `updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  14. PRIMARY KEY (`id`),
  15. KEY `idx_backup_id` (`backup_id`),
  16. KEY `idx_table_name` (`table_name`),
  17. KEY `idx_records_count` (`records_count`),
  18. KEY `idx_created_at` (`created_at`)
  19. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='SQL备份记录表';
  20. -- 2. 测试数据库备份功能
  21. -- 假设我们有一个测试表和一些测试数据
  22. -- 创建测试表
  23. CREATE TABLE IF NOT EXISTS `kku_test_backup_demo` (
  24. `id` int(11) NOT NULL AUTO_INCREMENT,
  25. `name` varchar(50) NOT NULL,
  26. `email` varchar(100) DEFAULT NULL,
  27. `status` tinyint(1) DEFAULT '1',
  28. `created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
  29. PRIMARY KEY (`id`)
  30. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='备份功能测试表';
  31. -- 插入测试数据
  32. INSERT INTO `kku_test_backup_demo` (`name`, `email`, `status`) VALUES
  33. ('张三', 'zhangsan@example.com', 1),
  34. ('李四', 'lisi@example.com', 1),
  35. ('王五', 'wangwu@example.com', 0),
  36. ('赵六', 'zhaoliu@example.com', 1);
  37. -- 3. 查询SQL备份记录的示例
  38. -- 查看所有SQL备份记录
  39. SELECT
  40. sb.id,
  41. sb.backup_id,
  42. sb.table_name,
  43. sb.records_count,
  44. sb.content_size,
  45. ROUND(sb.content_size / 1024, 2) as size_kb,
  46. sb.created_at,
  47. b.backup_name,
  48. b.backup_type
  49. FROM kku_cleanup_sql_backups sb
  50. LEFT JOIN kku_cleanup_backups b ON sb.backup_id = b.id
  51. ORDER BY sb.created_at DESC;
  52. -- 查看特定表的SQL备份
  53. SELECT
  54. sb.*,
  55. LEFT(sb.sql_content, 200) as sql_preview
  56. FROM kku_cleanup_sql_backups sb
  57. WHERE sb.table_name = 'kku_test_backup_demo'
  58. ORDER BY sb.created_at DESC;
  59. -- 统计SQL备份信息
  60. SELECT
  61. COUNT(*) as total_backups,
  62. COUNT(DISTINCT table_name) as unique_tables,
  63. SUM(records_count) as total_records,
  64. SUM(content_size) as total_size_bytes,
  65. ROUND(SUM(content_size) / 1024 / 1024, 2) as total_size_mb,
  66. AVG(records_count) as avg_records_per_backup,
  67. AVG(content_size) as avg_size_per_backup
  68. FROM kku_cleanup_sql_backups;
  69. -- 按表名分组的统计
  70. SELECT
  71. table_name,
  72. COUNT(*) as backup_count,
  73. SUM(records_count) as total_records,
  74. SUM(content_size) as total_size,
  75. ROUND(SUM(content_size) / 1024, 2) as size_kb,
  76. MAX(created_at) as latest_backup
  77. FROM kku_cleanup_sql_backups
  78. GROUP BY table_name
  79. ORDER BY total_size DESC;
  80. -- 4. 清理测试数据(可选)
  81. -- DROP TABLE IF EXISTS `kku_test_backup_demo`;