跳转到内容

保留、历史与安全删除

保留是由主机运维人员修改、会不可逆删除数据的配置。项目角色不能提高部署保留。缩短任何期限前,应取得数据负责人/合规批准、导出必要证据并验证可恢复备份。所有示例未执行,本页不授权运行清理。

数据默认实际清理边界
执行摘要90 天按创建时间批删;工作流子行随父级联删除
PostgreSQL stdout/stderr/structured 行14 天删除整个旧月分区,不是精确逐行 14 天 TTL
执行/工作流 I/O14 天独立清空负载,摘要继续保留
已结束异步任务/结果7 天已结束行;未来排队任务不是简单按已完成结果清理
聊天消息账本90 天消息历史行
聊天 peer context180 天无活动按最后活动,不是账号创建时间
控制面审计365 天平台 audit_logs,不是外部业务审计
文件读取审计90 天平台访问行
幂等键/已存响应24 小时去重与重试响应窗口
脚本旧版本50 个替代版本,范围 1..1000编辑时按每脚本数量裁剪,不是天数
发布 revision20 个发布时裁剪,准确变量 VIAT_PUBLISH_REVIAT_KEEP

类型、零值和作用域见完整保留变量。没有通用的“0 永远保留”:0 天可在下次清理删除几乎所有旧数据;间隔 0 虽可解析,却不能用于定时器。法律保全应使用批准的外部证据流程,不要猜无限值。

默认每 24 小时清理。启动会维护当前与未来五个月 PostgreSQL 行日志分区;破坏性清理等待完整周期,不是每次启动立即清空。每阶段失败记录后继续。多实例协调集群任务,但依赖幂等处理,不是不可变 exactly-once 保证。

与截止日期相交的整月分区仍须保留,因此行日志可能比配置天数长。负载可早于摘要消失,null 不表示原请求为空。执行摘要删除也会移除依赖的工作流步骤。PostgreSQL DELETE 后空间复用/文件缩小由 vacuum/存储管理决定,不保证立即返还操作系统空间。

关闭 VIAT_RETENTION_ENABLED 也会停掉该循环承担的分区维护和 OAuth/session/ticket/MFA/登录失败等过期清理,没有替代维护时不能把它当安全无限保留。上传暂存及其他专门清理独立。不要手工删活跃分区或 truncate 日志父表来“解决”磁盘满。

  1. 盘点 PostgreSQL、ClickHouse/Loki、业务库、对象存储、容器日志、备份和导出。删平台行不会删除外部副本。
  2. 为每类定义批准的最短/最长保留,考虑聊天和负载个人信息、审计证据以及客户端幂等重试窗口。
  3. 降低前导出证据并记录备份恢复点;清理后的快照无法找回已删数据。
  4. 修改部署变量,Compose 须显式传入,再按维护计划重启。更小值会作用于下次清理时已超龄的历史行,不只是新数据策略。
  5. 监控清理日志和数据库磁盘/行数/分区趋势。排查权限、锁、DDL、存储错误,进程健康不表示清理成功。
  6. 抽查旧/新记录及外部存储,保留批准记录,临时导出文件按证据政策处理。

下列是未执行策略示例,不是通用建议:

VIAT_RETENTION_EXECUTION_DAYS=90
VIAT_RETENTION_PAYLOAD_DAYS=7
VIAT_RETENTION_LINE_DAYS=14
VIAT_RETENTION_AUDIT_DAYS=365
VIAT_RETENTION_IDEMPOTENCY_HOURS=24
VIAT_RETENTION_INTERVAL_HOURS=24

缩短幂等窗口后,旧键/响应被删,迟到重试可能重新执行。缩短异步结果期限后,客户端可能取不到完成结果。客户端行为应与窗口一致,需长期保存的输出要写到持久业务存储。

ClickHouse/Loki TTL、业务 PostgreSQL 审计、S3 生命周期/版本、文件字节、容器日志和备份均是运维自行制定的策略。外部秘密可能在资源修改后保留历史值,应与数据库引用生命周期协调。Rust 共享产物 GC 默认关闭,未掌握完整 live-set 时不可跨混合架构/工具链安全清理。

误缩短期限后再提高不能找回数据。按事故批准控制停止进一步破坏性清理,保留现场,先按备份恢复恢复到隔离环境。经审阅只协调需要的数据;直接用旧库替换生产会丢新写入,并可能复活已撤销凭据或有副作用的排队任务。