升级¶
升级涉及将数据库从旧版本移动到新的支持版本(例如,从 Odoo 15.0 到 Odoo 17.0)。定期升级至关重要,因为每个版本都会提供新功能、错误修复和安全补丁。强烈建议使用 支持的版本。每个主要版本的支持期为三年。
根据托管类型和使用的 Odoo 版本,数据库升级可能是**强制性**。
如果数据库使用的是 **主要版本**(如 15.0、16.0、17.0),则必须每两年升级一次。
如果数据库使用的是**小版本**(如 17.1、17.2、17.4),则必须在下一版本发布几周后进行升级。小版本通常每三个月发布一次。
在最初的三年支持期之后,您还将有两年的时间完成升级。需要升级时,您将收到通知。
您可以无限期地使用同一版本,即使不建议这样做。请注意,版本差距越小,升级就越容易。
在自动执行强制升级前几周,您的数据库将收到通知。只要未到最后期限,您就可以控制升级过程。
具体来说,Odoo 升级团队会对每个应升级的数据库进行静默升级测试。如果测试成功且持续时间少于 20 分钟,您可以直接从数据库触发升级。如果测试失败,您可以使用 `数据库管理器 <https://www.odoo.com/my/databases>`_测试升级。
当您被邀请升级时,强烈建议您先 申请升级测试数据库。
如果在指定的到期日之前未采取任何措施,将触发自动升级到下一版本。
升级不包括:
警告
如果您的数据库包含自定义模块,在您的自定义模块版本可用于 Odoo 目标版本之前,数据库无法升级。对于维护自己自定义模块的客户,我们建议通过 请求升级数据库 同时 升级自定义模块源代码 来并行处理该过程。
升级概述¶
请求升级测试数据库(参见 获取升级的测试数据库)。
如果适用,请升级自定义模块的源代码,使其与新版本的 Odoo 兼容(请参阅 Upgrade a customized database)。
彻底测试升级后的数据库(参见 测试新版数据库)。
向 Odoo 报告测试过程中遇到的任何问题,方法是访问 “支持” 页面并选择 “与我未来升级有关的问题(我正在测试升级)” <https://www.odoo.com/help?stage=migration>`_。
一旦所有问题都得到解决,并且确信升级后的数据库可以作为主数据库使用而不会出现任何问题,就可以计划升级生产数据库。
请求升级生产数据库,使其在完成该过程所需的时间内不可用(参见 升级生产数据库)。
请访问 “支持” 页面并选择 “与我的升级(生产)有关的问题”,报告在升级到 Odoo 的过程中遇到的任何问题。<https://www.odoo.com/help?stage=post_upgrade>`_。
获取升级后的测试数据库¶
升级页面 是申请升级数据库的主要平台。不过,根据托管类型,您可以通过命令行(内部)、Odoo 云端版` 数据库管理器 <https://www.odoo.com/my/databases>`_或您的 `Odoo.sh 项目 <https://www.odoo.sh/project>`_进行升级。
注解
升级平台遵循与 Odoo.com 其他服务相同的 `隐私政策<https://www.odoo.com/privacy>`_。访问 一般数据保护条例
页面<https://www.odoo.com/gdpr>`_,了解更多有关Odoo 如何处理您的数据和隐私的信息。
Odoo 云端版数据库可通过 `数据库管理器 <https://www.odoo.com/my/databases>`_手动升级。
数据库管理器会显示与用户账户相关的所有数据库。不在最新版本 Odoo 上的数据库名称旁边会显示一个圆圈图标中的箭头,表示这些数据库可以升级。
点击**圆圈中的箭头**图标,启动升级程序。在弹出窗口中,填写:
您要升级到的 Odoo 版本,通常是最新版本
应收到升级数据库链接的**电子邮件**地址
升级的 目的,第一次升级请求会自动设置为 测试
数据库名称旁边会显示 正在升级 标记,直至完成。一旦升级成功,就会向提供的地址发送一封电子邮件,其中包含升级后测试数据库的链接。也可以通过点击数据库名称前的下拉箭头,从数据库管理器访问数据库。
Odoo.sh 与升级平台整合,简化了升级过程。
然后将**最新的生产每日自动备份**发送到升级平台。
一旦升级平台完成备份升级并将其上传到分支,它就会进入**特殊模式**:每次在分支上**推送提交**时,都会对升级后的备份进行**恢复操作**,并**更新所有自定义模块**。这样,您就可以在升级数据库的原始副本上测试自定义模块。升级过程的日志文件可通过 ~/logs/upgrade.log
在新升级的暂存构建中找到。
重要
在安装了自定义模块的数据库中,在执行升级之前,其源代码必须与目标版本的 Odoo 一致。如果没有自定义模块,将跳过“提交时更新”模式,升级后的数据库将在从升级平台传输过来后立即构建,并退出升级模式。
请查看 Upgrade a customized database 页面获取更多信息。
在数据库所在的计算机上输入以下命令行,即可启动标准升级程序:
$ python <(curl -s https://upgrade.odoo.com/upgrade) test -d <your db name> -t <target version>
注解
该指令对运行环境有一些要求:
操作系统必须提供的一些外部命令,通常可在任何 Linux 发行版(包括 WSL)中找到。如果缺少其中一个或多个命令,系统将显示错误。
执行命令的系统用户需要配置数据库访问权限。有关这一要求,请参阅 PostgreSQL 文档中的 “客户端环境 <https://www.postgresql.org/docs/current/libpq-envars.html>`_” 或 “客户端密码文件 <https://www.postgresql.org/docs/current/libpq-pgpass.html>`_”。
脚本需要能够通过 TCP 端口 443 和 32768 至 60999 范围内的任意 TCP 端口访问升级平台的一个或多个服务器。这可能会与限制性防火墙发生冲突,因此可能需要在防火墙配置中添加一个例外。
使用以下命令可以显示一般帮助和主要命令:
$ python <(curl -s https://upgrade.odoo.com/upgrade) --help
也可通过 “升级” 页面 <https://upgrade.odoo.com>`_ 申请升级测试数据库。
重要
在安装了自定义模块的数据库中,在执行升级之前,其源代码必须与目标版本的 Odoo 一致。请查看 Upgrade a customized database 页面了解更多信息。
注解
出于安全考虑,只有提交升级申请的人才能下载。
由于存储原因,数据库副本在提交升级服务器时没有文件存储。因此,升级后的数据库不包含生产文件库。
在还原升级数据库之前,必须将其文件存储与生产文件存储合并,以便在与新版本相同的条件下执行测试。
升级后的数据库包含:
包含升级数据库的`dump.sql`文件
`文件库`文件夹,包含从数据库内记录提取到附件(如有)的文件,以及目标 Odoo 版本的新标准 Odoo 文件(如新图像、图标、支付提供商徽标等)。该文件夹应与生产文件库合并,以获得完整的升级文件库。
注解
如果您希望多次测试升级,可以申请多个测试数据库。
注解
升级请求完成后,升级成功邮件会附上一份升级报告,属于 “管理/设置” 组的用户可在内部讨论应用程序中查看该报告。该报告提供了有关新版本所引入更改的重要信息。
测试新版数据库¶
必须对升级后的测试数据库进行测试,以确保升级上线后,不会因视图、行为或错误信息的变化而导致日常活动无法进行。
注解
测试数据库被中性化,一些功能被禁用,以防止它们影响生产数据库:
计划的操作已禁用。
通过将现有邮件服务器存档并添加一个假服务器来禁用外发邮件服务器。
支付提供商和快递公司将重置到测试环境中。
银行同步已禁用。如果您想测试同步,请联系银行同步提供商获取沙盒凭证。
强烈建议尽可能多地测试业务流程,以确保其正常运行,并进一步熟悉新版本。
基本测试清单
是否存在在测试数据库中停用但在生产数据库中激活的视图?
您的常规视图是否仍能正确显示?
您的报告(发票、销售订单等)是否正确生成?
您的网站页面是否正常运行?
您是否能够创建和修改记录?(销售订单、发票、采购、用户、联系人、公司等)。
您的邮件模板有问题吗?
已保存的翻译有问题吗?
您的搜索筛选器是否仍然存在?
能否导出数据?
在产品目录中随机抽取一个产品,比较其测试数据和生产数据,以验证所有内容(产品类别、售价、成本价、供应商、账户、路线等)是否相同。
购买本产品(采购应用程序)。
确认接收该产品(库存应用程序)。
检查生产数据库(库存应用程序)中接收该产品的路径是否相同。
向随机客户销售该产品(销售应用程序)。
打开客户数据库(通讯录应用程序),选择客户(或公司)并检查其数据。
运送该产品(库存应用程序)。
检查运送该产品的路线是否与生产数据库(库存应用程序)中的路线相同。
验证客户发票(开票或会计应用程序)。
将发票记入贷方(开具贷项凭单)并检查其是否与生产数据库中的一致。
查看报告结果(会计应用程序)。
随机检查您的税款、货币、银行账户和财政年度(会计应用程序)。
在线订购(网站应用程序),从在商店中选择产品到结账,检查所有操作是否与生产数据库中的一致。
本列表**并非**详尽无遗。请根据您对 Odoo 的使用情况,将示例扩展到其他应用程序。
如果您在测试升级后的测试数据库时遇到问题,可以访问 “支持” 页面并选择 “与我的未来升级有关的问题(我正在测试升级)”,请求 Odoo 的帮助。<https://www.odoo.com/help?stage=migration>`_。无论如何,在升级生产数据库之前,必须报告测试过程中遇到的任何问题,以便解决问题。
在测试过程中,您可能会遇到标准视图、功能、字段和模型之间的重大差异。这些更改无法逐一还原。但是,如果新版本引入的更改破坏了定制,则您的定制模块维护者有责任使其与新版本的 Odoo 兼容。
小技巧
不要忘记测试:
与外部软件(电子数据交换、应用程序接口等)整合
不同应用程序之间的工作流程(电子商务在线销售、将潜在客户转化为销售订单、交付产品等)
数据导出
自动动作
在表单视图的操作菜单中执行服务器操作,以及在列表视图中选择多个记录执行服务器操作
升级生产数据库¶
一旦完成 测试,并且确信升级后的数据库可以作为主数据库使用而不会出现任何问题,就可以计划启用日了。
在升级期间,您的生产数据库将不可用。因此,我们建议在数据库使用量最小的时候计划升级。
由于标准升级脚本和您的数据库都在不断变化,因此建议经常申请另一个升级测试数据库,以确保升级过程仍然成功,尤其是在升级需要很长时间才能完成的情况下。还建议在升级生产数据库的前一天充分演练升级过程。
重要
在没有进行首次测试的情况下投入生产可能会导致:
用户无法适应变化和新功能
业务中断(例如,不再可能验证操作)
糟糕的客户体验(例如,电子商务网站无法正常运行)
升级生产数据库的过程与升级测试数据库类似,但有一些例外。
该过程与 获取升级的测试数据库 类似,只是目的选项必须设置为 正式运行 而不是 测试。
警告
一旦请求升级,数据库将不可用,直到升级完成。一旦升级完成,就无法恢复到以前的版本。
该过程类似于 在 :guilabel:`正式运行 分支上获取升级的测试数据库<upgrade-request-test>。
**一旦分支上有新的提交,就会触发**进程。这样,升级过程就能与定制模块升级源代码的部署同步。如果没有自定义模块,升级过程会立即触发。
重要
在整个过程中,数据库都不可用。如果出现任何问题,平台会自动恢复升级,就像常规升级一样。如果升级成功,则会创建升级前的数据库备份。
自定义模块的更新必须成功,才能完成整个升级过程。在生产中尝试升级之前,请确保暂存升级的状态为 成功。有关如何升级自定义模块的更多信息,请参阅 Upgrade a customized database。
将数据库升级到生产数据库的指令与升级测试数据库的指令类似,只是参数 test
必须用 生产
代替:
$ python <(curl -s https://upgrade.odoo.com/upgrade) production -d <your db name> -t <target version>
也可通过 升级页面 申请升级正式运行数据库。
一旦上传了数据库,对生产数据库的任何修改都将 不会 出现在升级后的数据库中。因此,我们建议在升级过程中不要使用它。
重要
为生产目的申请升级数据库时,提交的副本不带文件库。因此,在部署新版本之前,必须将升级后的数据库文件存储与生产文件存储合并。
如果您的正式运行数据库出现问题,您可以访问 “支持” 页面并选择 “与我的未来升级有关的问题(正在测试升级)”,请求 Odoo 的帮助。<https://www.odoo.com/help?stage=migration>`_。
服务水平协议(SLA)¶
使用 Odoo 企业版,将数据库升级到最新版本 Odoo 完全 免费,包括为纠正升级后数据库中潜在差异所需的任何支持。
有关企业许可证中包含的升级服务的信息,请参阅 Odoo 企业订阅协议。本节将说明您可以期待哪些升级服务。
服务水平协议涵盖的升级服务¶
在 Odoo 云平台(Odoo 云端版和 Odoo.sh)上托管的数据库或自行托管的数据库(On-Premise)可随时享受升级服务:
升级所有**标准应用程序**;
升级所有使用定制应用程序**创建的**定制功能,前提是仍安装定制应用程序,且相关订阅仍处于激活状态;以及
升级定制维护订购**所涵盖的所有**开发和定制。
升级服务仅限于对数据库(标准模块和数据)进行技术转换和调整,使其与升级目标版本兼容。
《服务水平协议》未涵盖的升级服务¶
**不包括**以下与升级有关的服务:
在升级时**清除**已有的数据和配置;
the upgrade of additional modules not covered by a maintenance contract that are created in-house or by third parties, including Odoo partners; and
关于使用升级版功能和工作流程的**培训**。