Odoo Backup Strategy 是一套面向 Odoo 实例的完整备份与恢复方案,强调一次完整备份必须同时包含 PostgreSQL 数据库和 filestore(附件、图片)。技能覆盖手动与自动备份流程、异地存储,以及让宕机的 Odoo 重新上线的正确恢复顺序。
用途
- 为生产环境 Odoo 实例建立备份策略。
- 使用 shell 脚本和 cron 实现每日自动备份。
- 在服务器故障或数据损坏后恢复 Odoo。
- 诊断失败的备份或损坏的恢复结果。
主要能力
- 生成针对具体服务器环境定制的完整备份脚本。
- 提供任意故障场景下的分步恢复指令。
- 支持手动备份:pg_dump 导出数据库,tar 打包 filestore。
- 支持通过 cron 定时执行,例如每天凌晨 2 点运行。
- 支持备份后上传至 S3,并可清理超过 7 天的本地备份。
使用方式
提及 @odoo-backup-strategy 并描述服务器环境后,可获得定制化脚本;按需选择手动备份、自动化调度或恢复流程。手动备份示例使用 pg_dump -Fc 导出数据库、tar -czf 打包 filestore;自动化示例在 crontab 中添加定时任务;上传示例使用 aws s3 cp 将数据库转储和 filestore 压缩包分别上传到 S3 存储桶。
恢复流程
- 停止 Odoo(docker compose stop odoo 或 systemctl stop odoo)。
- 重建并恢复数据库:先 dropdb 再 createdb,然后执行 pg_restore;因为单独使用 --clean 在数据库不存在时会失败。
- 清空 filestore 目录并解压备份压缩包。
- 重启 Odoo。
- 在浏览器中验证:能否登录、近期记录是否可见、附件是否正常加载。
最佳实践
- 每月在暂存环境测试恢复。
- 遵循 3-2-1 规则:3 份副本、2 种不同介质、1 份异地副本。
- 每次 Odoo 升级前立即备份,作为回滚点。
- 用 pg_restore --list 验证备份完整性。
- 不要只备份数据库而忽略 filestore;不要在 Odoo 同一磁盘或服务器上存放备份;不要对不存在的数据库执行 pg_restore --clean。
限制
- 不覆盖 Odoo.sh 内置备份,Odoo.sh 有自己可从仪表板访问的备份系统。
- 脚本假定单数据库 Odoo 环境,多数据库实例需遍历所有数据库。
- filestore 路径可能因安装方式(Docker 卷或裸机)不同,恢复前应用 odoo-bin shell 确认路径。
- 大型 filestore(100GB 以上)可能需要 rsync 或 restic 等增量备份工具,而非完整 tar.gz 归档。