害,说起背景都要泪目了。
小弟最近在开发agent时候,误把旧代码发布了。正好这两天的公司的几个流量大户发版了,发版时会把agent打包进镜像,大量的埋点被拦截上报,APM系统差点被打爆,公司内网SLB飚到80%。
目前每天还会产生几万条无用数据,可以通过下面命令查看磁盘占用。
-- 查看数据库/数据库表的空间占用
select concat(round(sum(data_length/1024/1024),2),’MB’) as data
from tables
where table_schema=’DB_Name’
# and table_name=’Table_Name’;
在第一时间把agent版本回滚之后,联系几个流量大户重新打包发版,SLB及时下降。
考虑到所有服务重新发版影响范围太大,且不重新发版的影响也能接受,因此决定等后续用户自行择期发版。
但是agent上报的大量数据是无用的,为了防止端午期间数据库磁盘占用过高。设置一个mysql定时任务event为clear_project_config_event,清理无用数据。
-- 查看事件调度器是否启用
SHOW VARIABLES LIKE 'event_scheduler';
SELECT @@event_scheduler;
-- 查看当前所在库的事件
show events;
-- 创建事件
CREATE EVENT IF NOT EXISTS clear_project_config_event
ON SCHEDULE EVERY 1 MINUTE
ON COMPLETION PRESERVE
COMMENT '定时清理agent配置项(每分钟一次)'
DO TRUNCATE TABLE project_config;
-- 修改事件
ALTER EVENT clear_project_config_event
ON SCHEDULE EVERY 1 DAY STARTS DATE_ADD(DATE_ADD(CURDATE(), INTERVAL 1 DAY), INTERVAL 1 HOUR)
ON COMPLETION PRESERVE
COMMENT '定时清理agent配置项(每天凌晨1点执行)'
DO TRUNCATE TABLE project_config;
-- 开启事件(create完默认就是ENABLE)
ALTER EVENT clear_project_config_event ENABLE;
-- 删除事件
DROP EVENT IF EXISTS clear_project_config_event;
具体命令参考:超详细的MySQL事件
本文由 mdnice 多平台发布