fastbee/sql/log_clean_task_init.sql

96 lines
3.7 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

-- ============================================
-- 日志清理定时任务初始化 SQL
-- ============================================
-- 1. 插入定时任务记录到 sys_job 表
-- 说明:每天凌晨 0 点自动清理 15 天前的日志数据
-- 注意:LogCleanTask 类位于 fastbee-admin 模块的 com.fastbee.web.task 包下
INSERT INTO `sys_job` (
`job_name`,
`job_group`,
`invoke_target`,
`cron_expression`,
`misfire_policy`,
`concurrent`,
`status`,
`create_by`,
`create_time`,
`remark`
) VALUES (
'日志清理任务', -- 任务名称
'SYSTEM', -- 任务组名
'logCleanTask.cleanLogs()', -- 调用目标字符串
'0 0 0 * * ?', -- Cron 表达式:每天凌晨 00:00:00
'3', -- 错误策略:不触发立即执行
'1', -- 禁止并发执行
'0', -- 状态:正常
'admin', -- 创建者
NOW(), -- 创建时间
'每天凌晨0点自动清理15天前的日志数据(iot_event_log、sys_oper_log、sys_logininfor、iot_alert_log、sys_job_log、notify_log)'
);
-- ============================================
-- 清理的日志表说明
-- ============================================
-- 1. iot_event_log - IoT 事件日志
-- 2. sys_oper_log - 系统操作日志
-- 3. sys_logininfor - 登录日志
-- 4. iot_alert_log - 设备告警日志
-- 5. sys_job_log - 定时任务日志
-- 6. notify_log - 通知日志
--
-- 注意:iot_device_log 表(设备监测日志)不参与清理
-- 该表为核心数据,目前有 214 万条记录,需要数据迁移方案
-- 2. 可选:添加日志清理权限菜单(根据需要执行)
-- 如果需要在管理后台显示权限按钮,可以执行以下 SQL
/*
INSERT INTO `sys_menu` (
`menu_name`,
`parent_id`,
`order_num`,
`path`,
`component`,
`query`,
`is_frame`,
`is_cache`,
`menu_type`,
`visible`,
`status`,
`perms`,
`icon`,
`create_by`,
`create_time`,
`remark`
) VALUES (
'日志清理', -- 菜单名称
2, -- 父菜单ID(根据实际情况调整,2通常是系统管理)
99, -- 显示顺序
'', -- 路由地址
'', -- 组件路径
'', -- 路由参数
1, -- 不是外链
0, -- 不缓存
'F', -- 菜单类型:F=按钮
'0', -- 显示状态
'0', -- 菜单状态
'system:log:clean', -- 权限标识
'#', -- 图标
'admin', -- 创建者
NOW(), -- 创建时间
'日志清理按钮权限'
);
*/
-- ============================================
-- 验证定时任务是否创建成功
-- ============================================
-- SELECT * FROM sys_job WHERE job_name = '日志清理任务';
-- ============================================
-- 手动触发清理(可选)
-- ============================================
-- 如果需要立即清理历史数据,可以通过以下方式:
-- 方式1:通过管理后台 -> 系统监控 -> 定时任务 -> 点击"执行一次"
-- 方式2:调用 API 接口:POST /system/log/clean?days=30
-- 方式3:数据库执行:UPDATE sys_job SET status = '0' WHERE job_name = '日志清理任务';