编程开源技术交流,分享技术与知识

网站首页 > 开源技术 正文

DolphinScheduler海豚调度器删除历史日志问题

wxchong 2024-09-12 22:02:50 开源技术 9 ℃ 0 评论

DolphinScheduler删除历史日志,包括数据库和worker节点。

首先数据库中, 主要是是 t_ds_process_instance 和 t_ds_task_instance 两张表。一个是工作流关系表,一个是task任务日志联系表。 长期保留的话, 两个表数据都不小。可以定期清理。这样还可以加快页面访问速度,因为页面查询工作流,任务实例,包括项目管理页面都是多表关联查询的,量大的时候查询很慢。

直接办法, 在数据库中直接删除历史记录,保留近期需要的日志记录即可。方法如下:

删除 t_ds_process_instance 表数据。保留近10天记录。

use dolphinscheduler; 
DELETE FROM t_ds_process_instance WHERE start_time < DATE_SUB(CURDATE(), INTERVAL 10 DAY);

删除 t_ds_task_instance 表数据,保留近10天记录。

use dolphinscheduler; 
DELETE FROM t_ds_task_instance WHERE start_time < DATE_SUB(CURDATE(), INTERVAL 10 DAY);

这样,历史信息在数据库中就都删除了。

第二,海豚的实际运行日志是保留在worker节点上了, 数据库中的日志信息就是一个记录,日志在worker节点上的保留位置等信息。所以还需要把实际日志删除掉。

cd /dolphinscheduler安装目录/worker-server/logs 
find /home/dolphinscheduler/worker-server/logs -maxdepth 1 -type d -mtime +10 -exec rm -rf {} \;

worker-server/logs 目录下的日志是根据日志创建的。 如20240101这样,每天一个目录。

至此历史日志该删除的都已经删除了。



在说说表的关联关系。

select * from t_ds_project; 可以获取到项目的 code id 
select * from t_ds_process_task_relation where project_code = 'code id'; 获取 process_definition_code 和 post_task_code,项目下有多个工作流的话, 就会有多个id。 
select * from t_ds_process_instance where process_definition_code = 'process_definition_code' ; 获取相关工作流的实例信息。 
select * from t_ds_task_instance where task_code = 'post_task_code'; 获取相关实例的tas任务信息。 

另外: 
t_ds_process_instance 表实例的的 id 和 t_ds_task_instance 表中的 process_instance_id 也是关联的。 
如: 
select * from t_ds_task_instance where process_instance_id = '1018131' ; 可以查看单独一个工作流的task任务信息。

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表