跳至内容

Odoo 19 备份:库+附件一致性恢复演练

备份恢复:PostgreSQL 与 filestore 必须同一时刻
2026年7月2日
Odoo 19 备份:库+附件一致性恢复演练

Odoo 19 的附件默认落在 data_dir/filestore(或对象存储后端),元数据在 PostgreSQL 的 ir.attachment。只备份数据库、不备份附件,恢复后发票 PDF、产品图、电子签文件会大面积裂图;只拷附件、库是旧的,会出现「库里有附件行但文件哈希对不上」。本文给可执行的备份清单、一致性快照方法、隔离机演练步骤,以及 RTO/RPO 怎么写进运维制度。

备份必须覆盖的内容

  • PostgreSQL:逻辑备份(pg_dump)或经过验证的物理备份。
  • filestore 目录或对象存储桶的同版本快照。
  • odoo.conf、SSL 证书、反向代理配置、systemd/cron 说明。
  • 企业版订阅与密钥恢复流程(放在安全柜,不进公开仓库)。

对象存储要开启版本控制与受限权限;删除类操作要可回滚。

一致性:同一时刻比「每天各备一次」更重要

推荐顺序:短暂进入维护或停止写附件的窗口 → 先标记时间戳 T → 备份数据库 → 备份 T 时刻的 filestore / 对象存储版本 → 记录两者校验信息(库大小、附件数量、抽样哈希)。若无法停机,用存储层快照(盘符/卷快照)尽量对齐,并在文档标明可能的秒级偏差与风险。恢复时禁止「拿周一的库配周三的附件」。

隔离机演练(每季至少一次)

  1. 在与生产隔离的机器恢复库与附件。
  2. 用生产同版本 Odoo 启动,检查模块状态。
  3. 随机打开 ≥10 个 ir.attachment(含发票 PDF、产品图、邮件附件)。
  4. 走通一笔销售确认 → 交货 → 发票;确认报表可打印。
  5. 记录耗时、失败项、谁签字确认演练结果。

RTO/RPO 与期末加强

RPO:可接受丢多少时间的数据;RTO:多久必须恢复业务。财务期末、大促前提高频率(例如增加增量备份与附件同步频次)。明确决策人:谁宣布切流量、谁有权执行回滚。备份存放遵循 3-2-1:多介质、异地、定期验证可读。

常见失败模式

  • 只备库不备 filestore,恢复后全站裂图。
  • 对象存储权限过宽或过窄:恢复后 403 或被外部列举。
  • 未测过长文件名/中文附件名在目标 OS 的兼容性。
  • 演练只在文档里写「已备份」,从未真正启动过实例。

验收标准

  • 隔离机恢复后随机 10 个附件全部可打开且哈希/大小符合预期。
  • 恢复实例能完成一笔销售确认与 PDF 打印。
  • 演练记录含开始/结束时间、问题列表、签字人。
  • RTO/RPO 写进运维制度并与业务方确认。

备份监控与异地存放

每日备份任务本身要告警:失败、体积异常缩小、耗时飙升。异地拷贝完成后做抽样挂载验证, 而不是只看文件存在。对象存储备份账户与生产写账户分离,防止勒索场景互相覆盖。 恢复演练记录模板固定:环境、备份时间戳 T、库校验、附件抽样结果、业务冒烟结果、总耗时、签字。 财务期末前额外做一次增量+附件同步演练。

备份加密密钥与恢复密钥分人保管;恢复演练时验证密钥可用,而不是只验证密文存在。

恢复演练脚本化

脚本步骤:取时间戳 T 的库与 filestore → 启动同版本 Odoo → 抽样附件 → 跑销售冒烟 → 输出报告。加密备份要测解密。异地拷贝延迟计入 RPO。生产备份账户只写;恢复演练账户只读源。 年度做一次「全盘恢复到新机器」而不仅是文件存在性检查。演练缺陷进整改列表,关闭前不得宣称达标。

附件对象存储的版本回滚与库回滚步骤写在同一 runbook 的相邻章节,避免只回一半。

主题 392 收尾:权限、测试数据清理与 runbook 链接由负责人签字。

预生产勾选表需覆盖文章编号 392 全部验收点后再约生产窗口。

将文章编号 392 的配置变更记入发版说明,便于回滚对照。

将文章编号 392 的配置变更记入发版说明,便于回滚对照。

将文章编号 392 的配置变更记入发版说明,便于回滚对照。

将文章编号 392 的配置变更记入发版说明,便于回滚对照。

落地备忘(392-0):把本文验收项做成检查表,预生产逐条勾选并附截图;生产窗口前提交负责人签字。相关模型与字段以当前 Odoo 19 实例开发者模式显示为准。

中国Odoo网|对照 Odoo 19 企业版备份恢复实践:库与 filestore/对象存储同一时刻,按季隔离机演练并记录 RTO/RPO。

Odoo 19 备份:库+附件一致性恢复演练
2026年7月2日
存档