先分清是覆盖升级还是换服务器
覆盖升级是在同一台机器上运行新安装包,安装器会保留运行配置和数据;换服务器是把项目迁到另一台机器,需要先备份旧机器,再在新机器安装、恢复数据、重新确认授权。
- 同机覆盖升级:先备份,再运行同架构安装包,确认服务和画面。
- 换服务器:不要直接复制整个安装目录后启动,应按新机器重新安装。
- 分布式部署:先确认 database / app / io 角色,不能把 IO 节点当成数据库节点迁移。
- 更换硬件后旧机器授权文件不能直接复用,新机器需要新的授权请求。
覆盖升级是在同一台机器上运行新安装包,安装器会保留运行配置和数据;换服务器是把项目迁到另一台机器,需要先备份旧机器,再在新机器安装、恢复数据、重新确认授权。
覆盖升级是在同一台机器上运行新安装包,安装器会保留运行配置和数据;换服务器是把项目迁到另一台机器,需要先备份旧机器,再在新机器安装、恢复数据、重新确认授权。
核心数据分成三类:PostgreSQL 数据库、运行配置和画面资源。数据库里有站点、设备、Tag、菜单、权限、报警、趋势、事件记录和脚本配置;画面资源在 screens/assets;主机配置在 config。
hqcontrol.env、启动管理配置、安装清单和授权服务地址等主机级设置。logs,但日志不是恢复业务的主数据。数据库备份优先使用 PostgreSQL 备份工具。pg_dump 适合按数据库导出迁移文件;外部数据库可以使用现场已有备份系统;冷备份只在明确停机窗口内使用。不要在服务运行时直接复制 PostgreSQL 数据目录。
# 示例命令需按现场数据库地址、端口、账号、库名和路径调整
pg_dump -h <db-host> -p <db-port> -U <db-user> -Fc <db-name> -f hqserver-db.dump
配置和资源不要只压缩整个安装目录。建议按主机配置、业务数据库、画面目录、画面历史、画面内容配置、脚本文件和日志分类保存。这样恢复时可以按顺序处理,也便于判断某个问题属于配置、数据还是资源缺失。
config/hqcontrol.env、启动配置、安装清单。screens/assets 下的运行页面包(PPT 导出的 HTML/SVG/JS 等)。data/screen-file-history 下的上传、发布和恢复记录。configs/popup-templates/ 下的弹窗模板(每个模板一个文件),以及 configs/ 下的菜单等配置。configs/integration-scripts/integration-script 下的 .py、.toml、.trigger.toml。logs 作为迁移排查留档,不作为业务恢复主数据。Windows 默认安装根目录优先是 D:\HQCONTROL;如果 D 盘不是固定本地磁盘,安装器会回退到 C:\HQCONTROL。下面路径中的盘符按实际安装根目录替换。
D:\HQCONTROL\config\hqcontrol.env
D:\HQCONTROL\config\hqcontrol.launcher.json
D:\HQCONTROL\config\install.manifest.json
D:\HQCONTROL\data\postgres\
D:\HQCONTROL\data\redis\
D:\HQCONTROL\screens\assets\
D:\HQCONTROL\data\screen-file-history\
D:\HQCONTROL\configs\popup-templates\ # 弹窗模板(每个模板一个文件)
D:\HQCONTROL\logs\ # 可选,排障留档
D:\HQCONTROL\configs\integration-scripts\integration-script\ # 如现场使用文件式脚本迁移
Linux 默认安装根目录是 /opt/hqcontrol。如果安装时使用了 INSTALL_ROOT=/data/hqserver,就把下面路径里的 /opt/hqcontrol 替换成实际安装根目录。
/opt/hqcontrol/config/hqcontrol.env
/opt/hqcontrol/data/postgres/
/opt/hqcontrol/data/redis/
/opt/hqcontrol/screens/assets/
/opt/hqcontrol/data/screen-file-history/
/opt/hqcontrol/configs/popup-templates/ # 弹窗模板(每个模板一个文件)
/opt/hqcontrol/logs/ # 可选,排障留档
/opt/hqcontrol/configs/integration-scripts/integration-script/ # 如现场使用文件式脚本迁移
PostgreSQL 数据目录不能在服务运行时随手复制。推荐使用数据库备份工具;如果必须做冷备份,先停 HQControl、PostgreSQL 和 Redis,确认服务完全停止后再复制数据目录。
sudo hqcontrolctl disable,再 sudo hqcontrolctl stop,避免 watchdog 自动拉起。先记录旧服务器状态,再安装新服务器,再恢复数据,最后重新授权并完成交付确认。不要把旧机器的授权文件、运行时二进制和可再生成目录当成项目数据直接复制过去。
/settings、/license、系统状态和当前画面目录。config、screens/assets、data/screen-file-history,必要时备份 logs。/settings 中 PostgreSQL、Redis、公开主机名和授权服务地址。/license 导出新的授权请求,按在线或离线流程完成授权。新服务器恢复时,先让干净安装的 HQControl 能打开,再恢复数据库和画面资源。恢复后必须重新校准主机相关配置,尤其是公开主机名、数据库地址、Redis 地址、授权服务地址、脚本 Python 路径和反向代理配置。
/settings 和 /license 能进入。/settings,检查对外访问地址是否仍指向旧服务器。/license 为新机器重新处理授权,不直接复用旧机器授权文件。迁移后不要只看脚本文件是否存在,还要确认脚本元数据、触发器、工作目录、本地包目录、外部系统地址和访问 Key。第三方系统通常还需要更新 HQControl 地址、访问 Key 或反向代理入口。
libs、packages、site-packages 应随项目一起恢复。运行时程序和离线依赖可以通过安装包恢复,不应该和业务数据混在一起长期备份。除非正在执行完整镜像回滚,否则不要把这些目录当成项目迁移的主资料。
bin、web/admin/dist、modules/packages:随安装包恢复。runtime/python、runtime/postgresql、runtime/redis:运行时依赖,不是项目业务数据。run、缓存目录、安装器展开目录:可重新生成。迁移后如果页面能打开但数据不对,优先按这五项检查。它们覆盖大多数现场迁移问题。
/license 是否仍显示旧机器授权或未激活。screens/assets/<screen-code>/index.html。