feat: 内置 TDengine 时序库,自动建库建表
此前编排不含时序库,首页流量/用量图表、单卡流量历史等依赖时序数据的功能 不可用。现补上: - 新增 tdengine 服务(镜像 iotlcm/iotlcm:tdengine-3.3.6.13) 端口 6041(taosAdapter/WebSocket,应用用这个)+ 6030,数据卷 ./data/tdengine - 新增 tdengine-init 一次性服务:等 tdengine 健康后建库建表,并校验超级表存在, 缺表则以非零码退出 - 建库建表 SQL 取自生产环境 SHOW CREATE STABLE(仅结构无数据): iotlcm_daily DURATION 7d KEEP 1095d ms -> t_sim_card_usage_daily iotlcm_monthly DURATION 30d KEEP 1095d ms -> t_sim_card_usage_monthly - 三个服务的 tsdb.tdengine 配置指向 tdengine:6041(admin-svr / app-server / worker-svr) 踩坑记录:taos -f 是按行执行语句的,多行 CREATE STABLE 会报 Incomplete SQL statement,因此 SQL 必须单行;且 taos 出错时退出码仍为 0, 故 run.sh 额外做超级表校验。 已验证:初始化 4 条语句全部 Create OK、0 error;按 worker 的 INSERT 形式 (USING ... TAGS)写入成功、按 admin 的查询形式(SELECT ts,usage_mb,package_code,iccid) 可读回;整栈 15 个服务全 Up,admin-svr/openapi/sms/docs 均 200,worker 无时序库报错。
This commit is contained in:
@@ -0,0 +1,39 @@
|
||||
#!/bin/sh
|
||||
# ============================================================
|
||||
# TDengine 初始化执行脚本
|
||||
#
|
||||
# 由 compose 的 tdengine-init 服务调用,在 tdengine 健康后执行一次。
|
||||
# 做三件事:
|
||||
# 1. 过滤掉 init.sql 里的注释与空行(taos -f 会逐行执行,
|
||||
# 注释行会被当成不完整 SQL 报错)
|
||||
# 2. 执行建库建表
|
||||
# 3. 校验超级表确实存在,缺表则以非零码退出(让 compose 暴露失败)
|
||||
# ============================================================
|
||||
set -eu
|
||||
|
||||
echo "[tdengine-init] 准备 SQL(过滤注释与空行)"
|
||||
grep -vE '^[[:space:]]*(--|$)' /init/init.sql > /tmp/init.sql
|
||||
echo "[tdengine-init] 待执行语句数:$(wc -l < /tmp/init.sql)"
|
||||
|
||||
echo "[tdengine-init] 执行建库建表"
|
||||
taos -h tdengine -f /tmp/init.sql
|
||||
|
||||
echo "[tdengine-init] 校验超级表"
|
||||
missing=0
|
||||
for pair in "iotlcm_daily:t_sim_card_usage_daily" "iotlcm_monthly:t_sim_card_usage_monthly"; do
|
||||
db=${pair%%:*}
|
||||
stable=${pair##*:}
|
||||
if taos -h tdengine -s "show ${db}.stables;" 2>/dev/null | grep -q "$stable"; then
|
||||
echo " OK ${db}.${stable}"
|
||||
else
|
||||
echo " MISS ${db}.${stable}"
|
||||
missing=1
|
||||
fi
|
||||
done
|
||||
|
||||
if [ "$missing" -ne 0 ]; then
|
||||
echo "[tdengine-init] 失败:超级表缺失,请检查 taos 输出"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "[tdengine-init] 完成"
|
||||
Reference in New Issue
Block a user