升级与迁移太一
原地更新兼容的签名二进制、在版本不兼容时重置状态,或把完整 Controller 安装迁移到另一台主机。
选择流程
| 目标 | 流程 |
|---|---|
| 原主机兼容更新 | 备份 → 更新 → 重启 → 验证 |
| 迁移 Controller | 停止源端 → 完整复制状态和配置 → 在目标端用相同版本启动 |
| 状态不兼容更新 | 备份 → purge → 更新保留的二进制 → 安装 → 重新配置 |
更新器只验证发行元数据、校验和与签名,没有硬编码最低版本,也不替代持久化数据兼容性判断;更新前应阅读目标版本说明。
日常签名更新
sudo tiyi update --check
sudo tiyi update --yes # GitHub,失败自动回退 Gitee
sudo tiyi update --yes --mirror gitee # 强制 Gitee
sudo systemctl restart tiyi
tiyi --version
sudo tiyi system health
sudo journalctl -u tiyi -b -n 200 --no-pager
update 原子替换已验证的二进制,但不会重启正在运行的进程。
状态不兼容的更新
v3.6.0 无法读取更早版本创建的状态。完成这一次过渡时,先保留离线回滚归档,purge 旧状态/配置,再更新保留的二进制并安装新服务;不要导入旧归档。
sudo systemctl stop tiyi
stamp=$(date -u +%Y%m%dT%H%M%SZ)
sudo install -d -m 0700 /var/backups/tiyi
sudo tar --xattrs --acls -C / \
-czf "/var/backups/tiyi/tiyi-before-update-${stamp}.tar.gz" \
var/lib/tiyi etc/tiyi etc/systemd/system/tiyi.service usr/local/bin/tiyi
sudo sha256sum "/var/backups/tiyi/tiyi-before-update-${stamp}.tar.gz"
sudo /usr/local/bin/tiyi uninstall --purge
sudo /usr/local/bin/tiyi update --yes --mirror gitee
sudo /usr/local/bin/tiyi doctor --mode run
sudo /usr/local/bin/tiyi install --now
sudo systemctl status tiyi --no-pager
sudo journalctl -u tiyi -b -n 200 --no-pager
uninstall --purge 会删除 unit、状态/配置和服务账号,但有意保留 /usr/local/bin/tiyi;update 会覆盖这个文件。若保留的二进制没有 update 命令,验证归档后只删除该二进制,再用公开安装器。保存新管理员密码,并在目标协议要求时重新注册 Agent。
把 Controller 迁移到另一台主机
尽量使用完全相同的版本,严禁两台 Controller 同时运行。它们共享部署身份、签名密钥和 Agent 信任。
停止源端后复制完整 /var/lib/tiyi,不能只复制 state.db。目录还可能包含 WAL 文件、KEK、日志/明细分区、请求证据、CRS 数据、发行制品、bundle 和身份。同时复制 /etc/tiyi 及配置引用的外部 KEK、license、证书和密钥文件。
# 源端
tiyi --version
systemctl cat tiyi
sudo systemctl stop tiyi
stamp=$(date -u +%Y%m%dT%H%M%SZ)
sudo install -d -m 0700 /var/backups/tiyi
sudo tar --xattrs --acls -C / \
-czf "/var/backups/tiyi/tiyi-migrate-${stamp}.tar.gz" \
var/lib/tiyi etc/tiyi
sudo sha256sum "/var/backups/tiyi/tiyi-migrate-${stamp}.tar.gz"
# 干净目标端:替换 vX.Y.Z 与归档文件名。
source_tag=vX.Y.Z
archive=/secure/path/tiyi-migrate-YYYYMMDDTHHMMSSZ.tar.gz
curl -fsSL https://www.tiyisec.com/install.sh \
| TIYI_VERSION="$source_tag" bash
sudo /usr/local/bin/tiyi install
sudo sha256sum "$archive"
sudo tar --xattrs --acls -C / -xzf "$archive"
sudo chown -R tiyi:tiyi /var/lib/tiyi
sudo chgrp -R tiyi /etc/tiyi
sudo chmod -R g+rX /etc/tiyi
sudo /usr/local/bin/tiyi doctor --mode run --fix-state-ownership
sudo /usr/local/bin/tiyi install --now
解压前验证校验和,在运行 doctor 前重建审核过的 unit 选项、drop-in、注入环境与外部文件,并检查健康、站点、证书、远程 Agent、bundle revision、tiyi audit verify、日志和 /metrics。回滚时先停止目标端,再启动未改动的源端;两边都接受过写入后不能合并状态树。
排查失败
sudo /usr/local/bin/tiyi doctor --mode run
systemctl status tiyi --no-pager
journalctl -u tiyi -b -n 200 --no-pager
journalctl -u tiyi -f
ss -ltnp
- 安装器拒绝表示新主机安装器发现已有二进制、状态、配置或 unit,应使用相应升级或迁移流程。
- schema 不兼容表示目标二进制无法读取该状态,应使用匹配的二进制,或恢复/重置预期状态。
- sudo
secure_path找不到tiyi时使用完整二进制路径。 - 更新失败不会改动当前二进制;修复镜像/网络、磁盘或权限后重试。
参见 Prometheus 接入和通用排障。
