diff --git a/docs/changelog/index.md b/docs/changelog/index.md index 405fc536..e8507f80 100644 --- a/docs/changelog/index.md +++ b/docs/changelog/index.md @@ -20,6 +20,7 @@ sidebar: false ### 修改 +- 修复 ClickHouse TTL 迁移:`DateTime64` 时间列通过 `toDateTime()` 转换后再设置 TTL,避免 goose 启动报错。 - ClickHouse 遗留治理 Phase 2:保留期清理改为 TTL `MATERIALIZE TTL`(全量清理使用 `TRUNCATE`),消除定时 `ALTER DELETE` mutation;移除 GORM 双连接池并统一 `ChConn` 读路径;查询侧去除 `trim(remote_addr)`;`wait_for_async_insert` 调整为 1;新增 `/admin/status/clickhouse` 运维指标与 `of_node_traffic_hourly` 预聚合 MV。 - ClickHouse 写入路径优化:移除 Agent 心跳路径中的同步 `ALTER DELETE` 保留清理;`batchwriter` 新增 `MinBatchSize` 抑制过小批次定时 flush;可观测 writer 批次提升至 500、flush 间隔 5s,并为 OpenResty/FRPS/FRPC 补全去重。 - ClickHouse 客户端启用 `async_insert` 异步写入缓冲,并调高 `block_buffer_size` 与连接池默认值,降低小 part 与连接争用。 diff --git a/internal/db/migrator/goose/clickhouse/202607020001_optimize_analytics_tables.sql b/internal/db/migrator/goose/clickhouse/202607020001_optimize_analytics_tables.sql index 8881237e..07d37dbb 100644 --- a/internal/db/migrator/goose/clickhouse/202607020001_optimize_analytics_tables.sql +++ b/internal/db/migrator/goose/clickhouse/202607020001_optimize_analytics_tables.sql @@ -2,17 +2,18 @@ -- Add TTL policies to analytics tables so ClickHouse can expire rows automatically. ALTER TABLE w_user_access_logs MODIFY TTL created_at + INTERVAL 180 DAY; -ALTER TABLE of_node_access_logs MODIFY TTL logged_at + INTERVAL 90 DAY; +-- DateTime64 columns must be cast for TTL (ClickHouse requires DateTime/Date in TTL expr). +ALTER TABLE of_node_access_logs MODIFY TTL toDateTime(logged_at) + INTERVAL 90 DAY; -ALTER TABLE of_node_metric_snapshots MODIFY TTL captured_at + INTERVAL 30 DAY; +ALTER TABLE of_node_metric_snapshots MODIFY TTL toDateTime(captured_at) + INTERVAL 30 DAY; -ALTER TABLE of_node_request_reports MODIFY TTL window_ended_at + INTERVAL 30 DAY; +ALTER TABLE of_node_request_reports MODIFY TTL toDateTime(window_ended_at) + INTERVAL 30 DAY; -ALTER TABLE of_node_obs_openresty MODIFY TTL captured_at + INTERVAL 30 DAY; +ALTER TABLE of_node_obs_openresty MODIFY TTL toDateTime(captured_at) + INTERVAL 30 DAY; -ALTER TABLE of_node_obs_frps MODIFY TTL captured_at + INTERVAL 30 DAY; +ALTER TABLE of_node_obs_frps MODIFY TTL toDateTime(captured_at) + INTERVAL 30 DAY; -ALTER TABLE of_node_obs_frpc MODIFY TTL captured_at + INTERVAL 30 DAY; +ALTER TABLE of_node_obs_frpc MODIFY TTL toDateTime(captured_at) + INTERVAL 30 DAY; -- Narrow ORDER BY for node access logs to match common filter patterns. -- Requires ClickHouse 24.10+ (MODIFY ORDER BY). On older versions this statement