升级

把已有安装替换为 v3.5.0

主机只要运行过 v3.4.0 或更早版本,就必须完整卸载,再初始化全新的 v3.5.0 服务。这不是原地状态迁移。

高危且不可逆。sudo tiyi uninstall --purge 会删除 /var/lib/tiyi/etc/tiyi 下的全部历史和配置,同时移除 systemd unit 与服务身份。接受 purge 前必须先停止服务,并验证完整备份。

为什么 update 后重启会失败

sudo tiyi update --yes --mirror gitee 可以正确安装 v3.5.0 二进制,但不会重启服务,也不会让 v3.4 状态自动兼容。重启后可能出现以下任一错误:

store: migration 0016_telemetry_rollups.sql sha256 drift ...
store: clean-break state reset required (schema=..., minimum=47) ...

不要反复重启,也不要把旧数据库放进新的 v3.5 状态目录。必须按下面顺序全新安装。

1. 记录需要重建的内容

tiyi version
sudo systemctl status tiyi --no-pager
sudo systemctl cat tiyi
sudo tiyi site list
sudo tiyi upstream list
sudo tiyi policy list
sudo tiyi cert list
sudo tiyi agents list
sudo tiyi user list

同时记录自定义监听、DNS、上游、WAF 调优、证书源文件、license 路径、身份提供商、SIEM 目标和远程 Agent 名称。不要把密码、Token、私钥、KEK、license 内容或捕获请求粘贴到工单或聊天中。

2. 停止服务并完整备份旧安装

以下默认路径示例会先停止 SQLite 写入,再制作一致副本:

TIYI_BACKUP_DIR="/var/backups/tiyi-pre-v3.5-$(date +%Y%m%d-%H%M%S)"

sudo systemctl stop tiyi
sudo install -d -m 0700 \
  "$TIYI_BACKUP_DIR/state" "$TIYI_BACKUP_DIR/config"
sudo cp -a /var/lib/tiyi/. "$TIYI_BACKUP_DIR/state/"
sudo cp -a /etc/tiyi/. "$TIYI_BACKUP_DIR/config/"
sudo systemctl cat tiyi | sudo tee "$TIYI_BACKUP_DIR/tiyi.service" >/dev/null

sudo test -f "$TIYI_BACKUP_DIR/state/state.db"
sudo ls -ld "$TIYI_BACKUP_DIR"

把所有自定义 store.state_dbcrypto.kek_file、证书、license、日志分区、配置和服务环境文件路径加入备份,并逐项验证。备份含凭据和未脱敏历史,只允许 root 访问,应加密并转移到运维方控制的存储。它只用于历史留存和人工重建,不能把旧数据库直接恢复进 v3.5。

3. 完整卸载旧版本

sudo tiyi uninstall --purge

阅读提示,接受全部数据丢失后才输入 yes,不要自动化这一决定。purge 会删除 unit、状态、配置、服务用户/组、KEK、日志、上传资产、用户、策略、事件与 Agent 注册;二进制仍保留。unit 已被移除,所以下一步不能执行 sudo systemctl restart tiyi

4. 安装或确认签名的 v3.5.0 二进制

# Gitee
curl -fsSL https://gitee.com/tiyisec/tiyi/raw/main/install.sh \
  | TIYI_MIRROR=gitee TIYI_VERSION=v3.5.0 bash

# 或官网/GitHub 路径
curl -fsSL https://www.tiyisec.com/install.sh \
  | TIYI_VERSION=v3.5.0 bash

tiyi version

如果之前的 update 已让 tiyi version 显示 v3.5.0,可以不再下载;完整 purge 和全新服务安装仍然是必需步骤。

5. 创建并启动全新服务

tiyi doctor --no-color
tiyi install --print
sudo tiyi install --now
sudo systemctl status tiyi --no-pager
sudo tiyi system health

tiyi install --now 会重新创建服务身份、目录、加固 unit 与全新 Controller 数据库。请安全保存安装器打印的新一次性管理员密码。

6. 重建配置并重新注册 Agent

通过受支持的 UI 或 CLI 重建站点、上游、证书、WAF 策略、用户/RBAC、告警通道、SIEM 目标、身份提供商与授权配置。每个远程 Agent 都需要新的单次注册 Token 和页面新生成的 v3.5.0 安装命令。不要复用旧身份标记、Token、缓存 bundle、state.db 或日志分区。

7. 完成验收

如果全新服务仍然失败,收集 systemctl status tiyijournalctl -u tiyi -n 200 --no-pager。必须先识别这一新错误,再考虑任何高危操作。