
先说结论:私有化部署项目管理软件升级通常不会主动删除业务数据,禅道项目管理软件也是如此。升级主要做两件事:用新版本程序覆盖旧程序,再通过升级向导执行数据库结构变更。数据库记录和附件文件仍留在原存储位置。
但“不会主动删”不等于“没有风险”。覆盖错目录、数据库连错、附件没备份、容器没挂持久卷、跨版本跳跃或升级中断,都可能让系统看起来像丢了数据。升级前要完成一次可恢复的备份,并准备回滚路径。
私有化部署项目管理软件升级会丢数据吗?先分清程序和数据
数据通常分散在四处:数据库、附件目录、配置文件、二次开发代码。升级只替换程序文件;项目、需求、任务、Bug、用例、文档等记录在数据库里,附件在文件目录里,不会因为覆盖程序而自动消失。
真正的分界点在升级向导。只要页面提示需要执行 SQL,本次升级就包含数据库结构或数据变更。跨大版本、切换管理模式、文档编辑器升级,都可能触发这类变更。数据库会从旧结构迁移到新结构,过程不可逆,必须提前备份。
常见的“像丢数据”场景有:数据库连接配置被覆盖,系统连到空库;只备份程序,没备份数据库和附件;服务未停就复制数据库文件,备份不一致;Docker 升级删了容器,却没复用原数据卷。多数不是升级主动删数据,而是操作路径出了问题。
升级前怎么备份:数据库、附件、配置与代码
一次能回滚的备份,至少包含四部分:
- 数据库:用数据库原生工具导出,或使用禅道后台备份。
- 附件:完整复制附件上传目录。数据库有记录、文件不在,附件就会打不开。
- 配置:备份 config/my.php 等连接配置,记录数据库地址、端口、库名和账号。
- 代码:备份整个程序目录,尤其是二次开发文件和自定义主题。

同时记录当前版本号、部署方式、PHP 与数据库版本。版本号通常在页面右下角或后台首页可以看到。
备份方式有三种:
- 后台备份:管理员进入后台—系统设置—备份。禅道 18.2 之后入口在系统设置,旧版本在数据—备份。官方文档提示,数据量超过 10 GB 时更适合用命令行。
- 命令行备份:进入禅道 bin 目录,初始化后执行 backup.sh 或 backup.bat,分别生成数据库和附件备份。
- 整目录备份:一键安装包停掉服务后打包整个运行目录;源码部署则分别备份数据库、附件目录、配置和程序目录。
日常还可以配合全量、增量与异地备份策略,降低单点故障。
备份完成后不要只看“成功”提示。检查文件大小、解压是否正常,并在测试环境实际恢复一次。没有验证过的备份,只能算副本,不能算恢复能力。
不同部署形态怎么升级:源码包、一键安装包与 Docker
共同原则是:保留原数据目录,只替换程序,再执行升级向导。
源码包部署
- 停掉 Web 服务,确认没有用户写入。
- 再次确认备份可恢复。
- 下载与当前 PHP 版本匹配的源码 zip 包。不要用一键安装包覆盖源码目录。
- 解压后把 zentaopms 目录内的文件复制到原 zentao 目录,覆盖同名文件。不要把目录嵌套成 zentao/zentaopms。
- 启动服务,访问 /zentao/upgrade.php,按向导选择版本、生成 ok.txt、执行 SQL。过程中不要关闭页面或中断数据库连接。
具体入口和向导以禅道使用手册为准。
一键安装包
先停掉 zbox 或集成面板中的 Apache、MySQL 服务,再备份整个运行目录。随后用对应版本的源码文件覆盖 /opt/zbox/app/zentao,保留 config/my.php 和附件目录,启动服务后访问 upgrade.php。旧环境 PHP 版本过低时,先确认新版本要求,不要在原环境硬升。
Docker 部署
官方文档的步骤是:先通过后台或 backup.sh 备份,停止并删除旧容器,再用新镜像启动,并继续挂载原来的 /data 目录。容器可以重建,数据卷不能删。 数据库在容器外时单独备份;使用 Kubernetes 时,先确认 PVC 的备份或快照可用。
跨多个大版本时,先在测试环境逐级验证。生产环境可原地升级,也可保留旧环境,在新环境完成升级和校验后切换入口。后者回滚成本更低。
升级后怎么校验数据没丢
不要只看首页能不能打开。按下面几项核对:
| 检查项 | 怎么查 | 通过标准 |
|---|---|---|
| 版本号 | 页面右下角或后台首页 | 已是目标版本 |
| 业务数据 | 项目、产品、需求、任务、Bug、用例、文档数量 | 与升级前基线一致 |
| 抽样记录 | 随机打开几条老记录 | 字段、状态、关联关系正常 |
| 附件 | 下载图片、Office、PDF 各一份 | 能打开,不是 404 或 0 字节 |
| 权限与集成 | 管理员、项目经理、普通成员分别登录 | 角色、LDAP、邮件、代码库、定时任务正常 |
升级前记录一份数据基线,包括各模块数量、几个样本 ID 和附件样本。升级后对照,比凭印象更可靠。校验通过后立刻再做一次完整备份,把可用状态固定下来。
失败后怎么回滚:程序、数据库、附件一起退
出现 SQL 报错、升级中断、附件大面积打不开、关键数据缺失时,先停止写入,不要反复点重试,也不要在生产库上手工改表。
回滚不是把程序换回旧版就够了。新版本可能已经修改数据库结构,旧程序读不了新库。正确顺序是:
- 停止服务,保留失败现场,便于排查。
- 恢复旧程序目录和配置文件。
- 导入升级前的数据库备份。
- 恢复升级前的附件目录。
- 启动服务,按升级前基线校验。
- 确认正常后,再处理失败环境。
Docker 场景同理:只把镜像标签换回旧版,数据库结构仍是新的,未必能启动。必须恢复升级前的数据卷或数据库备份。 回滚方案要在升级前写好,并在测试环境演练一次。

一次安全升级的时间线:从 T-7 到 T+1
- T-7:确认目标版本、升级路径和环境要求,在测试环境完整演练一遍。
- T-3:记录数据基线,检查备份空间,通知使用团队。
- T-1:完成全量备份,验证备份可解压、可恢复。
- T-0:选择业务低峰,停止写入,二次备份,执行升级,按清单校验。
- T+1:观察登录、附件、定时任务和集成,保留旧环境与备份至少一个稳定周期。
把升级当成一次可回滚的变更,而不是一次点按钮的操作。
常见问题
后台备份够不够?
后台备份能覆盖数据库和附件,适合日常使用。但只要存在二次开发、自定义配置或特殊存储路径,就应同时备份程序目录和配置文件。数据量大时,用命令行备份更稳妥。
升级必须停机吗?
建议在业务低峰停机升级。文件级备份和数据库结构变更都需要一致性,带写入升级会放大失败风险。
信创数据库也按同样命令备份吗?
不一定。达梦、OceanBase 等数据库的备份方式与 MySQL 不同,应使用对应厂商的备份工具,并由 DBA 验证备份一致性。不要直接照搬 mysqldump。
升级后附件打不开,是数据丢了吗?
不一定。先检查附件目录权限、存储路径和配置文件,再核对数据库中的附件记录。不要急着重传或覆盖原文件,避免二次损坏。
私有化部署项目管理软件升级本身不是最大风险,没有备份就动手才是。把数据库、附件、配置和代码备齐,把升级路径在测试环境走通,把校验和回滚写进窗口计划,数据安全才有实际保障。
文章标题 :私有化部署项目管理软件升级会丢数据吗?怎么备份 ,发布者 :项目管理研究院





























