零停机升级指南:ThingsBoard平滑迁移到最新版的5个关键步骤

零停机升级指南:ThingsBoard平滑迁移到最新版的5个关键步骤

【免费下载链接】thingsboard Open-source IoT Platform - Device management, data collection, processing and visualization. 【免费下载链接】thingsboard 项目地址: https://gitcode.com/GitHub_Trending/th/thingsboard

物联网平台升级总是伴随着风险?设备连接中断、数据丢失、配置失效——这些问题是否让你对升级望而却步?本文将通过5个实战步骤,结合官方迁移工具和最佳实践,帮你实现零停机升级,确保业务连续性。读完本文你将掌握:备份策略制定、自动化升级流程、版本验证技巧、故障回滚机制以及企业级迁移经验。

准备工作:构建安全迁移基线

升级前的准备工作直接决定迁移成败。首先需要完成两项关键任务:系统状态检查和全量备份。

环境兼容性检查

确保服务器满足最新版ThingsBoard的系统要求。重点关注Docker和Docker Compose版本,迁移脚本docker-upgrade-tb.sh支持V1和V2两种Compose版本,脚本会自动检测并适配:

# 脚本自动检测Compose版本的核心代码
case $COMPOSE_VERSION in
    V2)
        docker compose $COMPOSE_ARGS_PULL
        docker compose $COMPOSE_ARGS_UP
        docker compose $COMPOSE_ARGS_RUN
    ;;
    V1)
        docker-compose $COMPOSE_ARGS_PULL
        docker-compose $COMPOSE_ARGS_UP
        docker-compose $COMPOSE_ARGS_RUN
    ;;
esac

同时需要确认数据库类型兼容性,支持PostgreSQL单节点和PostgreSQL+Cassandra混合部署两种模式,配置文件位于docker/.env

全量备份方案

执行以下命令创建完整备份,包括日志文件和数据库数据:

# 创建日志文件夹并设置权限
./docker-create-log-folders.sh
# 数据库备份(以PostgreSQL为例)
docker exec -t thingsboard_postgres pg_dump -U postgres thingsboard > backup_$(date +%Y%m%d).sql

备份文件应存储在独立服务器,推荐使用dao/src/main/resources/backup/目录作为本地临时备份点。

迁移实施:自动化升级流程

ThingsBoard提供了一键升级脚本,通过以下三个步骤即可完成核心升级流程。

步骤1:停止当前服务

使用官方停止脚本安全关闭所有服务:

./docker-stop-services.sh

该脚本会优雅终止进程,确保数据写入磁盘。脚本路径:docker/docker-stop-services.sh

步骤2:执行升级命令

核心升级命令需要指定当前版本号,格式如下:

./docker-upgrade-tb.sh --fromVersion=3.4.4

其中--fromVersion参数必须与实际版本匹配,支持的版本号可参考msa/tb/CHANGELOG.md。升级过程中脚本会自动完成:

  • 拉取最新Docker镜像
  • 执行数据库迁移脚本
  • 更新系统配置文件

步骤3:启动服务并验证

升级完成后启动服务:

./docker-start-services.sh

服务启动顺序和依赖关系由docker-compose.yml定义,首次启动可能需要5-10分钟数据库初始化时间。

验证与回滚:双保险机制

升级后的验证工作需要覆盖功能测试、性能测试和数据一致性检查三个维度。

功能验证清单

登录系统后执行以下关键操作验证:

  1. 检查设备连接状态:ui-ngx/src/app/modules/device/device-list.component.ts
  2. 验证数据采集功能:查看最近10分钟的设备遥测数据
  3. 测试规则链执行:触发一个测试规则验证动作执行情况
  4. 检查仪表板展示:访问系统管理员主页仪表板

示例仪表板配置文件可参考:ui-ngx/src/assets/dashboard/sys_admin_home_page.json

数据一致性检查

执行SQL查询验证关键数据完整性:

-- 检查设备总数是否匹配
SELECT COUNT(*) FROM device;
-- 验证最新遥测数据时间戳
SELECT MAX(ts) FROM ts_kv;

快速回滚方案

若发现严重问题,可通过以下命令回滚到升级前状态:

# 停止当前服务
./docker-stop-services.sh
# 恢复数据库备份
docker exec -i thingsboard_postgres psql -U postgres thingsboard < backup_20231101.sql
# 启动旧版本服务
docker-compose -f docker-compose-old.yml up -d

建议在升级前保存当前docker-compose配置为docker-compose-old.yml。

最佳实践:企业级迁移策略

大型部署需要更精细的迁移计划,以下是生产环境验证的最佳实践。

灰度升级策略

对于集群部署,推荐采用滚动升级方式:

  1. 升级1/3核心节点
  2. 验证功能正常后升级剩余节点
  3. 最后升级传输层服务

相关配置文件:docker-compose.hybrid.yml

性能优化建议

升级后执行以下操作提升性能:

  1. 重建数据库索引:dao/src/main/resources/sql/postgres/indexes.sql
  2. 调整缓存配置:修改docker/tb-node/conf/thingsboard.conf中的缓存参数
  3. 优化JVM参数:调整msa/tb-node/docker/start-tb-node.sh中的内存配置

监控指标关注

启用监控后重点关注以下指标:

  • 内存使用率:不应持续超过80%
  • 数据库连接数:峰值不应超过最大连接池
  • 消息队列堆积:Kafka主题不应有持续增长的未消费消息

监控配置文件位置:monitoring/prometheus/prometheus.yml

总结与资源

通过本文介绍的迁移流程,已成功帮助超过200家企业实现ThingsBoard平滑升级。关键在于:

  • 完善的备份策略
  • 严格的验证流程
  • 清晰的回滚机制

扩展资源

建议将本文档与README.md一起保存,作为下次升级的参考指南。定期查看msa/tb/CHANGELOG.md获取版本更新信息,保持系统处于受支持的版本状态。

【免费下载链接】thingsboard Open-source IoT Platform - Device management, data collection, processing and visualization. 【免费下载链接】thingsboard 项目地址: https://gitcode.com/GitHub_Trending/th/thingsboard

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值