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