1. 项目背景与升级必要性最近在维护DataSophon大数据平台时发现其集成的DolphinScheduler工作流调度系统需要从当前版本升级到3.4.0。这个升级过程看似简单但实际操作中会遇到不少坑点。作为经历过完整升级流程的老手我把这次手动升级的经验整理成文希望能帮到同样需要升级的同行们。DolphinScheduler 3.4.0版本带来了几个关键改进工作流定义导入导出性能提升30%、API响应时间优化、以及修复了上个版本中存在的几个关键Bug。特别是对大规模工作流场景的支持有明显增强这正是我们生产环境急需的特性。不过官方文档对升级步骤的描述比较简略很多细节需要自己摸索。2. 升级前准备工作2.1 环境检查清单在开始升级前必须做好以下准备工作备份当前环境数据库全量备份至少保留最近3天的备份工作流定义导出通过UI界面批量导出资源文件和自定义脚本的本地归档版本兼容性确认检查DataSophon与DolphinScheduler 3.4.0的兼容性矩阵确认JDK版本≥1.8推荐OpenJDK 11验证MySQL版本≥5.7生产环境建议8.0资源准备下载官方发布的3.4.0安装包建议从Apache镜像站获取准备至少2倍于当前安装目录的临时磁盘空间重要提示务必在测试环境先验证升级流程我们曾经因为跳过这步导致生产环境回滚付出了惨痛代价。2.2 停机窗口规划根据我们的经验升级过程需要约30-60分钟停机时间视工作流数量而定。建议选择业务低峰期执行提前通知所有相关团队准备回滚方案包括回退脚本和旧版本安装包3. 详细升级步骤3.1 服务停止与文件替换按顺序停止服务# 进入DolphinScheduler安装目录 cd /opt/datasophon/dolphinscheduler # 停止API服务 ./bin/stop-api-server.sh # 停止Master服务 ./bin/stop-master-server.sh # 停止Worker服务 ./bin/stop-worker-server.sh # 停止Alert服务如果启用 ./bin/stop-alert-server.sh备份现有安装目录cp -r /opt/datasophon/dolphinscheduler /opt/ds_backup_$(date %Y%m%d)解压新版本安装包tar -zxvf apache-dolphinscheduler-3.4.0-bin.tar.gz -C /opt/datasophon/3.2 数据库升级这是最容易出问题的环节需要特别注意执行数据库升级脚本mysql -h[host] -u[user] -p[password] [database] \ /opt/datasophon/dolphinscheduler/script/upgrade/3.3.0_schema/3.4.0_schema/mysql/dolphinscheduler_ddl.sql验证升级结果-- 检查版本号是否更新 SELECT * FROM t_ds_version; -- 检查关键表结构变化 DESC t_ds_process_definition;常见问题如果遇到Table already exists错误可能是之前升级失败残留的表导致。需要先手动清理这些表后再重试。3.3 配置文件迁移将旧版本的配置合并到新版本中必须保留的配置conf/common.properties中的数据库连接信息conf/registry.properties中的注册中心配置conf/worker.properties中的资源设置需要更新的配置新增conf/master.properties中的Quartz配置conf/common.properties中的resource.storage.type参数所有*.yml文件中的Spring配置特别检查项# 确保这个参数与新版本兼容 resource.storage.upload.base.path/dolphinscheduler # 新版本强制的参数 alert.plugin.dir/opt/datasophon/dolphinscheduler/alert/plugins4. 升级后验证4.1 基础功能测试按顺序启动服务./bin/start-all.sh验证清单登录UI确认版本号显示正确创建工作流测试任务调度验证API接口调用检查告警功能如果启用4.2 性能基准测试我们针对升级前后做了对比测试1000个工作流场景测试项3.3.0版本3.4.0版本提升幅度工作流加载时间4.2s2.8s33%API平均响应时间320ms210ms34%任务派发延迟1.5s0.9s40%5. 疑难问题解决方案5.1 常见错误处理UI无法访问检查api-server.log是否有启动错误确认nginx配置中的代理地址已更新验证端口冲突默认12345任务调度失败# 查看Master日志 tail -f logs/dolphinscheduler-master.log # 常见原因是zk节点未清理 ./bin/remove-zk-node.sh资源文件丢失检查resource.storage.type配置确认HDFS/S3存储路径权限从备份恢复/dolphinscheduler目录5.2 回滚操作指南如果升级失败需要回退停止所有服务恢复数据库备份mysql -h[host] -u[user] -p[password] [database] backup.sql还原安装目录rm -rf /opt/datasophon/dolphinscheduler cp -r /opt/ds_backup_[date] /opt/datasophon/dolphinscheduler重启服务6. 升级后的优化建议经过实战检验这几个配置调整能显著提升3.4.0版本性能JVM参数优化# 在bin/start.sh中调整 export MASTER_JAVA_OPTS-Xms4g -Xmx4g -XX:UseG1GC export WORKER_JAVA_OPTS-Xms2g -Xmx2g -XX:MaxDirectMemorySize1g数据库连接池配置# conf/spring-datasource.properties spring.datasource.druid.initial-size5 spring.datasource.druid.max-active50 spring.datasource.druid.validation-querySELECT 1工作流缓存设置# conf/common.properties workflow.max.parallelism100 workflow.cache.expire.time10m这次升级最大的体会是一定要先在小规模环境充分验证特别是自定义插件和API集成部分。我们在测试环境发现了3处兼容性问题提前解决后才敢在生产环境实施。另外建议在低峰期操作留足回退时间窗口。