日志数据清理
概述
在 HAP 私有部署系统中,一些“日志”类数据是长久保留在 MongoDB 中的,对于一些使用场景可能造成这类数据量庞大,占用较多数据库存储空间。
你可以在 MongoDB 中通过 show dbs
命令查看各库大小,再通过统计表大小的命令找到占用存储空间大的表。
我们提供了日志数据清理方案,根据设定的规则,可以将相关表中的数据物理删除。
操作前必读
清理操作是物理删除,对应数据永久丢失。一旦完成,对应时间段内的日志数据将无法恢复,也无法在系统界面上查看。
影响范围:
-
mdworkflow
库可清理的表主要影响范围:- 工作流执行历史
- 审批流历史
- 中断运行中流程:如果清理的数据中包含尚未完成的审批流或工作流,这些流程将因数据丢失而中断,无法继续执行。
-
mdworksheetlog
库可清理的表主要影响范围:- 工作表行记录日志
-
mdintegration
库可清理的表主要影响范围:- 集成中心历史请求日志
-
mdservicedata
库可清理的表主要影响范围:- 应用行为日志
- 使用分析日志
数据清理白名单
归属库 | 表名 | 表用途简述 |
---|---|---|
mdworkflow | wf_instance | 主流程执行历史关联数据 |
mdworkflow | wf_subInstanceActivity | 子流程执行历史关联数据 |
mdworkflow | wf_subInstanceCallback | 子流程执行历史关联数据 |
mdworkflow | wf_instanceExtends | 工作流执行历史关联数据 |
mdworkflow | code_catch | 存储代码块节点在运行中产生的临时数据 |
mdworkflow | hooks_catch | 存储接收到的 Webhook 数据 |
mdworkflow | webhooks_catch | 存储工作流节点"发送API请求"获取到的数据 |
mdworkflow | app_multiple_catch | 存储获取多条数据节点中勾选“直接获取”后存储的数据 |
mdworkflow | custom_apipackageapi_catch | 存储调用 API 集成接口返回的响应数据 |
mdworksheetlog | wslog* | 存储对应月份的工作表行记录日志 表名格式为 wslog+日期(例如 wslog202409) |
mdintegration | wf_instance | 集成中心-请求日志 |
mdintegration | wf_instance_relation | 集成中心-请求日志关联数据 |
mdintegration | webhooks_catch | 集成中心-请求日志中“查看详情”对应的日志数据 |
mdintegration | code_catch | 集成中心-请求日志中“查看详情”对应的日志数据 |
mdintegration | json_catch | 集成中心-请求日志中“查看详情”对应的日志数据 |
mdintegration | custom_parameter_catch | 集成中心-请求日志中“查看详情”对应的日志数据 |
mdservicedata | al_actionlog* | 存储对应月份的应用行为日志 表名格式为 al_actionlog+日期(例如 al_actionlog202409) |
mdservicedata | al_uselog | 存储“使用分析”功能的日志数据 |
数据清理操作建议
以下是针对不同类型数据的具体清理方法和注意事项。
按月归档的日志表
此方法适用于按月自动创建的日志表。
-
适用表:
mdworksheetlog
库下所有以wslog
开头的表mdservicedata
库下所有以al_actionlog
开头的表
-
操作方法: 对于这类按月归档的表,最直接高效的清理方式是使用
drop
命令删除整个表。此操作速度极快,并能立即释放表所占用的全部磁盘空间。 -
操作示例: 以下命令将删除 mdworksheetlog 库中 2024 年 1 月的工作表日志。
use mdworksheetlog;
db.wslog202401.drop();
工作流执行历史数据
清理工作流(及关联审批流)的执行历史时,涉及以下四个核心数据表:
wf_instance
wf_subInstanceActivity
wf_subInstanceCallback
wf_instanceExtends
这四个表会有数据紧密关联,共同构成了一条完整的流程记录。因此,在执行清理操作时,必须将它们视为一个不可分割的整体。
您需要对这四个表应用完全相同的删除规则(例如,按相同的时间范围删除),并确保操作同步完成。任何不一致的清理都会破坏数据完整性,可能导致历史流程查询异常或引发未知的系统问题。
缓存数据表 (以_catch 结尾)
这些表分布在 mdworkflow
和 mdintegration
库中,主要用于存储工作流和集成任务执行过程中的临时缓存数据。您可以根据 实际需求,对这些表进行独立的、选择性的清理。
潜在风险与影响:
在清理这些表之前,请务必了解以下潜在影响:
-
影响运行中的流程:清理
mdworkflow
库下的缓存表,可能会导致尚未执行完毕的工作流因找不到依赖数据而失败。以webhooks_catch
表为例,它用于暂存接收到的 Webhook 事件。如果在关联的工作流执行完毕前清除了该表中的事件数据,那么这个正在运行的流程就会因找不到依赖数据而中断或失败。 -
影响日志详情查看:清理
mdintegration
库下的缓存表,将导致集成中心“请求日志”中的“查看详情”功能中的日志数据为空,因为其所需的详细数据已被删除。
操作建议:
根据您对上述风险的接受程度,可以选择以下两种清理方式:
-
按条件清理
如果需要确保业务连续性,建议使用数据清理工具,按时间范围等条件删除旧的缓存数据。
-
直接删除整表
如果业务上可以接受上述风险(例如,确认无运行中流程,且不再需要查看旧日志详情),可以直接 drop 整个缓存表,这是回收磁盘空间最快的方式。
使用分析日志
mdservicedata
库中的 al_uselog
表存储了产品“使用分析”功能的数据。
由于前端页面仅支持查询最近一年的数据,因此建议定期清理一年之前的数据,以减少不必要的存储占用。