log_tables.sql 7.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. -- ============================================================
  2. -- 审计日志模块建表脚本(移植自 sdf-serve,ude 库)
  3. -- 执行目标: 10.10.10.30:3306 / ude
  4. -- 执行前提: SHOW TABLES 确认以下 4 张表不存在
  5. -- ============================================================
  6. -- 1. 系统链路与业务日志表(审计中间件每次请求写一条 type=1)
  7. CREATE TABLE IF NOT EXISTS `t_system_log` (
  8. `id` bigint NOT NULL AUTO_INCREMENT COMMENT '自增主键',
  9. `iden` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '日志编号',
  10. `trace_id` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '全链路唯一Trace ID',
  11. `span_id` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '本次跨度唯一Span ID',
  12. `parent_span_id` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '父SpanID,用于构建调用树',
  13. `type` tinyint(1) NOT NULL COMMENT '日志类型:1.系统日志;2.接口日志',
  14. `service_name` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '所属服务或模块名',
  15. `uri_path` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '接口请求路径',
  16. `http_method` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '请求方法:GET/POST/PUT/DELETE',
  17. `method` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '请求业务方法',
  18. `level` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '日志级别:1-DEBUG,2-INFO,3-WARN,4-ERROR',
  19. `app_key` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '调用接口应用标识',
  20. `user_id` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '系统用户ID',
  21. `user_name` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '系统用户名',
  22. `client_ip` varchar(45) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '客户端IP',
  23. `request_header` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci COMMENT '请求头(脱敏后)',
  24. `request_body_digest` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '请求体SM3摘要',
  25. `request_body_file_key` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '请求体原文FileKey(MinIO)',
  26. `response_code` int NOT NULL COMMENT '响应业务码(ude恒100000/100xxx,取body业务码)',
  27. `response_body_digest` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '响应体SM3摘要',
  28. `response_body_file_key` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '响应体原文FileKey(MinIO)',
  29. `error_message` text COLLATE utf8mb4_unicode_ci COMMENT '错误提示,仅非100000时填',
  30. `duration_ms` int NOT NULL COMMENT '本Span耗时(毫秒)',
  31. `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '写入时间',
  32. `h_mac` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'HMAC-SM3防篡改签名值',
  33. `audit_status` tinyint(1) NOT NULL COMMENT '审计状态:1.未审计;2.审计通过;3.审计异常',
  34. PRIMARY KEY (`id`),
  35. UNIQUE KEY `idx_iden` (`iden`) USING BTREE,
  36. KEY `idx_trace` (`trace_id`),
  37. KEY `idx_parent_span` (`parent_span_id`),
  38. KEY `idx_service_method` (`service_name`,`method`),
  39. KEY `idx_created_at` (`created_at`)
  40. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='系统链路与业务日志表';
  41. -- 2. 动态配置表(热加载:MinIO参数/记录级别/归档阈值/HMAC密钥)
  42. CREATE TABLE IF NOT EXISTS `t_config` (
  43. `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
  44. `config_item` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '配置项',
  45. `config_value` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '配置值',
  46. `edit_flag` tinyint(1) NOT NULL COMMENT '是否允许编辑,1是不可编辑configItem,2是所有均可编辑',
  47. `description` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '描述',
  48. `updated_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '最后更新人',
  49. `updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '配置更新时间',
  50. PRIMARY KEY (`id`),
  51. UNIQUE KEY `idx_config_item` (`config_item`) COMMENT '配置项唯一索引'
  52. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='配置表';
  53. -- 3. 日志归档记录表
  54. CREATE TABLE IF NOT EXISTS `t_log_archive_record` (
  55. `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
  56. `archive_name` varchar(100) NOT NULL COMMENT '归档任务名',
  57. `record_count` int NOT NULL COMMENT '归档记录数',
  58. `archive_file_key` varchar(255) NOT NULL COMMENT '归档SQL文件FileKey(MinIO)',
  59. `archive_mode` tinyint(1) NOT NULL COMMENT '归档方式:1-手动,2-自动',
  60. `batch_size` int NOT NULL DEFAULT '10000' COMMENT '本次归档的阈值N',
  61. `archived_by` varchar(50) NOT NULL COMMENT '归档人账号',
  62. `archived_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '归档时间',
  63. PRIMARY KEY (`id`),
  64. KEY `idx_archive_by_time` (`archived_by`,`archived_at`)
  65. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='日志归档记录表';
  66. -- 4. 日志恢复记录表
  67. CREATE TABLE IF NOT EXISTS `t_log_restore_record` (
  68. `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
  69. `archive_id` bigint NOT NULL COMMENT '归档记录ID',
  70. `restore_status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '恢复状态:1-成功,2-失败,3-处理中',
  71. `restore_message` varchar(255) DEFAULT NULL COMMENT '恢复说明或错误原因',
  72. `restored_by` varchar(50) NOT NULL COMMENT '恢复人账号',
  73. `restored_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '恢复时间',
  74. PRIMARY KEY (`id`),
  75. KEY `idx_restore_by_time` (`restored_by`,`restored_at`),
  76. KEY `idx_archive_id` (`archive_id`) USING BTREE
  77. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='日志恢复记录表';
  78. -- ============================================================
  79. -- t_config 初始配置行(8 项)
  80. -- 注意:
  81. -- * file_* 四项暂用 sdf 同套 MinIO(10.10.10.25:9020/桶test)的现值,
  82. -- 桶名改为 ude 专有;确认后可随时 UPDATE(服务每个请求热加载,改完立即生效)。
  83. -- * file_use_ssl = '1' 启用TLS,'2' 停用(sdf 语义)。
  84. -- * log_record_level = 日志入库门槛,t_config 缺失/非法时服务端自动退化为 info。
  85. -- * log_hmac_secret 留空仍可运行(空串作为密钥计算,审计链不中断),
  86. -- 但防篡改强度有限;建议尽快填入一段随机字符串(32~64位)。
  87. -- ============================================================
  88. INSERT INTO t_config (`config_item`, `config_value`, `edit_flag`, `description`, `updated_by`) VALUES
  89. ('file_endpoint', '10.10.10.25:9020', 1, '文件服务器地址(MinIO endpoint)', 'ude'),
  90. ('file_bucket', 'ude', 1, '文件bucket', 'ude'),
  91. ('file_access_key', 'minio_bxM8k5', 1, '文件accessKey(与sdf共用,确认后替换)', 'ude'),
  92. ('file_secret_key', 'minio_mP6zC4', 1, '文件secretKey(与sdf共用,确认后替换)', 'ude'),
  93. ('file_use_ssl', '2', 1, '是否使用加密链接(1启用,2停用)', 'ude'),
  94. ('log_record_level', 'info', 1, '日志记录级别:debug/info/warn/error', 'ude'),
  95. ('archive_threshold','100', 1, '日志归档阈值(条)', 'ude'),
  96. ('log_hmac_secret', '', 1, '日志防篡改Hmac密钥(建议填随机串)', 'ude');