3.X TDT执行记录数据清理

  其他常见问题
内容纲要

概要描述


1、TDT一直没有自动清理执行记录的逻辑,导致执行记录会一直累加。

2、特别是版本升级时,对数据库做备份,或者代码中有对表的DDL操作,会导致非常耗时。

3、建议现场在升级前,停服后,清理历史数据,再做数据备份。

4、本清理方案,适用于TDS2.X及以后得所有版本。

清理操作说明(推荐保留一个月数据)
相关数据表:tdt_solution_execution、tdt_solution_sub_job

详细说明


1、不停机清理

以下方式每次清理10000条任务执行记录,超出部分需要再次执行。假设需要保留从2024.1.1开始的执行记录。

// 先执行这个SQL,分批整理数据
delete from tdt_solution_sub_job where sol_exec_uuid in (select unique_id from tdt_solution_execution where schedule_time < '2024-01-01 00:00:00' order by id limit 10000);

// 上一条sql已经将数据清理完之后(select count为0),再执行本sql
delete from tdt_solution_sub_job_log where  create_time < '2024-01-01 00:00:00' order by id limit 10000;

// 上一条sql已经将数据清理完之后(select count为0),再执行本sql
delete from tdt_solution_execution where schedule_time < '2024-01-01 00:00:00';

2、停机清理

(1)停止TDT服务

(2)将需要保留的数据写入新的记录表,假设需要保留从2024.1.1开始的执行记录。

rename table tdt_solution_sub_job_log to tdt_solution_sub_job_log_bak;
rename table tdt_solution_sub_job to tdt_solution_sub_job_bak;
rename table tdt_solution_execution to tdt_solution_execution_bak;
create table tdt_solution_sub_job_log like tdt_solution_sub_job_log_bak;
create table tdt_solution_sub_job like tdt_solution_sub_job_bak;
create table tdt_solution_execution like tdt_solution_execution_bak;
insert into tdt_solution_sub_job_log select * from tdt_solution_sub_job_log_bak where create_time >= '2024-01-01 00:00:00';
insert into tdt_solution_execution select * from tdt_solution_execution_bak where schedule_time >= '2024-01-01 00:00:00';
insert into tdt_solution_sub_job select * from tdt_solution_sub_job_bak where sol_exec_uuid in (select unique_id  from tdt_solution_execution);

(3)删除旧表,根据实际需求操作,如果需要保留历史数据,且数据盘空间充裕,不需要另外删除,之后进行升级、迁移等操作时,注意排除备份表。

drop table tdt_solution_sub_job_bak;
drop table tdt_solution_sub_job_bak;
drop table tdt_solution_execution_bak;

这篇文章对您有帮助吗?

平均评分 0 / 5. 次数: 0

尚无评价,您可以第一个评哦!

非常抱歉,这篇文章对您没有帮助.

烦请您告诉我们您的建议与意见,以便我们改进,谢谢您。