Sentry 清理数据

本文详细介绍了如何管理Sentry系统的数据,包括修改环境变量设置数据保留天数,使用Sentry的cleanup命令进行数据软清理,执行PostgreSQL的VACUUMDB来释放磁盘空间,通过crontab添加定时任务自动化清理,以及在处理大表时采用新建空表并删除旧表的方法,确保系统性能和磁盘空间的有效利用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 修改 Sentry 程序根目录下 .env 配置
SENTRY_EVENT_RETENTION_DAYS=7
2. 数据软清理

进入 worker 容器:

docker exec -it sentry_onpremise_worker_1 /bin/bash

保留多少天的数据,cleanup 使用 delete 命令删除postgresql数据,但对于 delete、update 等操作,只是将对应行标志为 DEAD,并没有真正释放磁盘空间:

sentry cleanup --days 7
3. PostgreSQL 数据清理

进入 PostgreSQL 容器:

docker exec -it sentry_onpremise_postgres_1 /bin/bash

运行清理:

vacuumdb -U postgres -d postgres -v -f --analyze
4. crontab 添加定时清理
0 16 * * 5 cd /App/sentry && { time docker-compose run --rm worker cleanup --days 7; } &> /tmp/sentry-cleanup.log
0 16 * * 6 { time docker exec -i $(docker ps --format "table {{.Names}}" | grep postgres) vacuumdb -U postgres -d postgres -v -f --analyze; } &> /tmp/sentry-vacuumdb.log
5. 当第2或第3步一直耗时过长,无法完成,可以直接新建空表 nodestore_node ,然后删除旧表

进入 PostgreSQL 容器:

docker exec -it sentry_onpremise_postgres_1 /bin/bash

登录 PostgreSQL 数据库:

su - postgres
psql

删除表前后可以先查看下该表占用的空间,一般 nodestore_node 数据表占用磁盘空间最大:

SELECT
    table_schema || '.' || table_name AS table_full_name,
    pg_size_pretty(pg_total_relation_size('"' || table_schema || '"."' || table_name || '"')) AS size
FROM information_schema.tables
ORDER BY
pg_total_relation_size('"' || table_schema || '"."' || table_name || '"') DESC limit 10;

新建备份表结合重命名方式,可以实现不影响 Sentry 服务正常运行时删除数据。此操作可能耗时较长,可以使用 tmux 或者 screen 工具后台执行:

ALTER TABLE nodestore_node RENAME TO nodestore_node_old;
CREATE TABLE nodestore_node (LIKE nodestore_node_old INCLUDING ALL);
ALTER TABLE nodestore_node_old DISABLE TRIGGER ALL;
DROP TABLE nodestore_node_old CASCADE;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值