内容纲要
概要描述
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;