1. 升级前的准备工作打好安全牌补丁包升级就像给房子做装修准备工作没做好后面全是麻烦。我经历过一次半夜紧急回滚的惨痛教训就是因为备份不完整导致的。现在每次升级前我都会严格按照这个清单操作首先得确认补丁包版本是否匹配。很多新手会忽略这个基础检查结果升级完发现版本不对。用这个SQL语句查当前系统版本SELECT * FROM ecologyuplist ORDER BY uploadtime DESC备份是保命符我习惯做三重备份程序备份直接压缩整个D:\weaver\ecology目录命名带上日期时间比如ecology_bak_20240815.zip数据库全量备份用SQL Server的维护计划做完整备份同时导出关键表如hrmresource、docdetail配置文件快照把WEB-INF/prop下的所有.properties文件单独打包特别提醒备份文件不要放在服务器本地我有次遇到硬盘故障本地备份全没了。现在都用NAS云盘双备份推荐用7z分卷压缩大文件。2. 升级操作全流程详解2.1 服务停止的正确姿势很多人以为停止Resin服务就是点个停止按钮其实这里有坑。我推荐这样操作# 先正常停止 resin stop # 等待30秒后强制确认进程是否结束 taskkill /f /im resin.exe # 检查端口占用 netstat -ano | findstr 8080遇到过几次服务假死的情况表面看服务停了实际端口还被占用。这时候直接覆盖文件会导致文件锁死升级必失败。2.2 文件替换的黄金法则解压补丁包后千万别直接拖拽覆盖我总结了个安全替换法先用WinRAR的测试压缩包功能检查补丁包完整性在D盘新建temp_ecology目录解压用Beyond Compare做文件夹差异对比关闭所有可能占用文件的程序包括杀毒软件用robocopy命令执行覆盖robocopy D:\temp_ecology\ecology D:\weaver\ecology /MIR /ZB /R:1 /W:12.3 缓存清理的隐藏细节清除WEB-INF/work缓存时我发现有些情况需要额外处理如果有集群环境所有节点都要清理遇到特别大的缓存文件超过1GB先记录文件名再删除清空后建议重启服务器不是必须但能避免玄学问题3. 升级后验证的十八般武艺3.1 基础功能检查清单登录页面能打开只是第一步我通常会跑这个检查流程用不同浏览器Chrome/Firefox/Edge测试登录检查三大核心模块公文收发新建、传阅、归档流程审批发起、审批、转办文档中心上传、下载、搜索验证定时任务是否正常执行3.2 数据库一致性验证补丁包如果包含数据库脚本一定要检查这些关键点-- 检查版本号是否更新 SELECT * FROM ecologyversion -- 验证新增表结构 SELECT * FROM syscolumns WHERE idobject_id(新表名) -- 检查存储过程是否更新 SELECT OBJECT_DEFINITION(OBJECT_ID(存储过程名))遇到过最坑的情况是脚本执行成功但字段注释丢失导致前端显示异常。现在我都手动备份syscomments表。4. 紧急回滚的终极方案4.1 程序回滚的避坑指南原始文档说的改名还原方法是对的但实际场景更复杂。我的完整回滚流程先重命名故障目录ren D:\weaver\ecology ecology_err_20240815从备份恢复时先用icacls重置权限icacls D:\weaver\ecology_bak /reset /T复制后检查文件所有者是否为SYSTEM4.2 数据库回滚的原子操作数据库回滚最怕出现中间状态我采用事务方案BEGIN TRANSACTION ALTER DATABASE ecology SET SINGLE_USER WITH ROLLBACK IMMEDIATE RESTORE DATABASE ecology FROM DISKD:\backup\ecology_full.bak WITH REPLACE ALTER DATABASE ecology SET MULTI_USER COMMIT TRANSACTION重要提醒回滚后一定要检查weaver.properties里的数据库连接配置特别是密码特殊字符的情况。5. 疑难杂症处理宝典5.1 脚本报错的处理艺术遇到SQL脚本报错时别急着手动执行。我总结的排查步骤先看sysupgradelog里的完整错误用文本对比工具比较报错脚本和历史版本在测试库预执行特别是Oracle的DDL语句修改脚本时保留原文件注释5.2 页面异常的诊断方法升级后页面白屏或500错误可以这样排查查看resin的stderr.log检查WEB-INF/log下的ecology.log临时开启debug模式# 修改weaver.properties debugtrue log.levelDEBUG用Arthas工具动态诊断Java类加载问题6. 升级后的性能调优补丁包升级后经常出现性能波动我通常会做这些优化重建数据库索引EXEC sp_MSforeachtable PRINT ?; EXEC sp_indexoption ?, AllowRowLocks, TRUE;调整Resin线程池参数thread-pool thread-count-min50/thread-count-min thread-count-max200/thread-count-max /thread-pool清理历史日志表特别是workflow_requestlog记住每次调优前要做基准测试用JMeter记录TPS和响应时间变化。
【泛微ecology】从备份到验证:一次完整的补丁包升级与回滚实战指南
发布时间:2026/6/17 19:43:02
1. 升级前的准备工作打好安全牌补丁包升级就像给房子做装修准备工作没做好后面全是麻烦。我经历过一次半夜紧急回滚的惨痛教训就是因为备份不完整导致的。现在每次升级前我都会严格按照这个清单操作首先得确认补丁包版本是否匹配。很多新手会忽略这个基础检查结果升级完发现版本不对。用这个SQL语句查当前系统版本SELECT * FROM ecologyuplist ORDER BY uploadtime DESC备份是保命符我习惯做三重备份程序备份直接压缩整个D:\weaver\ecology目录命名带上日期时间比如ecology_bak_20240815.zip数据库全量备份用SQL Server的维护计划做完整备份同时导出关键表如hrmresource、docdetail配置文件快照把WEB-INF/prop下的所有.properties文件单独打包特别提醒备份文件不要放在服务器本地我有次遇到硬盘故障本地备份全没了。现在都用NAS云盘双备份推荐用7z分卷压缩大文件。2. 升级操作全流程详解2.1 服务停止的正确姿势很多人以为停止Resin服务就是点个停止按钮其实这里有坑。我推荐这样操作# 先正常停止 resin stop # 等待30秒后强制确认进程是否结束 taskkill /f /im resin.exe # 检查端口占用 netstat -ano | findstr 8080遇到过几次服务假死的情况表面看服务停了实际端口还被占用。这时候直接覆盖文件会导致文件锁死升级必失败。2.2 文件替换的黄金法则解压补丁包后千万别直接拖拽覆盖我总结了个安全替换法先用WinRAR的测试压缩包功能检查补丁包完整性在D盘新建temp_ecology目录解压用Beyond Compare做文件夹差异对比关闭所有可能占用文件的程序包括杀毒软件用robocopy命令执行覆盖robocopy D:\temp_ecology\ecology D:\weaver\ecology /MIR /ZB /R:1 /W:12.3 缓存清理的隐藏细节清除WEB-INF/work缓存时我发现有些情况需要额外处理如果有集群环境所有节点都要清理遇到特别大的缓存文件超过1GB先记录文件名再删除清空后建议重启服务器不是必须但能避免玄学问题3. 升级后验证的十八般武艺3.1 基础功能检查清单登录页面能打开只是第一步我通常会跑这个检查流程用不同浏览器Chrome/Firefox/Edge测试登录检查三大核心模块公文收发新建、传阅、归档流程审批发起、审批、转办文档中心上传、下载、搜索验证定时任务是否正常执行3.2 数据库一致性验证补丁包如果包含数据库脚本一定要检查这些关键点-- 检查版本号是否更新 SELECT * FROM ecologyversion -- 验证新增表结构 SELECT * FROM syscolumns WHERE idobject_id(新表名) -- 检查存储过程是否更新 SELECT OBJECT_DEFINITION(OBJECT_ID(存储过程名))遇到过最坑的情况是脚本执行成功但字段注释丢失导致前端显示异常。现在我都手动备份syscomments表。4. 紧急回滚的终极方案4.1 程序回滚的避坑指南原始文档说的改名还原方法是对的但实际场景更复杂。我的完整回滚流程先重命名故障目录ren D:\weaver\ecology ecology_err_20240815从备份恢复时先用icacls重置权限icacls D:\weaver\ecology_bak /reset /T复制后检查文件所有者是否为SYSTEM4.2 数据库回滚的原子操作数据库回滚最怕出现中间状态我采用事务方案BEGIN TRANSACTION ALTER DATABASE ecology SET SINGLE_USER WITH ROLLBACK IMMEDIATE RESTORE DATABASE ecology FROM DISKD:\backup\ecology_full.bak WITH REPLACE ALTER DATABASE ecology SET MULTI_USER COMMIT TRANSACTION重要提醒回滚后一定要检查weaver.properties里的数据库连接配置特别是密码特殊字符的情况。5. 疑难杂症处理宝典5.1 脚本报错的处理艺术遇到SQL脚本报错时别急着手动执行。我总结的排查步骤先看sysupgradelog里的完整错误用文本对比工具比较报错脚本和历史版本在测试库预执行特别是Oracle的DDL语句修改脚本时保留原文件注释5.2 页面异常的诊断方法升级后页面白屏或500错误可以这样排查查看resin的stderr.log检查WEB-INF/log下的ecology.log临时开启debug模式# 修改weaver.properties debugtrue log.levelDEBUG用Arthas工具动态诊断Java类加载问题6. 升级后的性能调优补丁包升级后经常出现性能波动我通常会做这些优化重建数据库索引EXEC sp_MSforeachtable PRINT ?; EXEC sp_indexoption ?, AllowRowLocks, TRUE;调整Resin线程池参数thread-pool thread-count-min50/thread-count-min thread-count-max200/thread-count-max /thread-pool清理历史日志表特别是workflow_requestlog记住每次调优前要做基准测试用JMeter记录TPS和响应时间变化。