ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

告别手动备份:OpenEverest 自动化备份与恢复完整教程

告别手动备份:OpenEverest 自动化备份与恢复完整教程

【免费下载链接】openeverest

OpenEverest is an open-source platform for automated database, storage and LLMs provisioning and management. It supports multiple technologies and can be hosted on any Kubernetes infrastructure, in the cloud or on-premises.

项目地址:https://gitcode.com/gh_mirrors/op/openeverest
点击查看免费下载

OpenEverest 是部署在 Kubernetes 上的开源数据库管理平台,内置自动化备份与恢复能力,支持定时任务、按需备份、多 S3 兼容存储以及基于时间点的恢复(PITR),让你彻底告别手动执行pg_dump或mongodump的繁琐操作。

本文以一个 K8s 集群中的数据库实例为例,带你从零完成备份存储配置 → 定时备份策略设置 → 按需备份 → 数据恢复的全流程。


一、理解 OpenEverest 备份体系

动手之前,先认识四个核心 CRD 对象,它们共同构成 OpenEverest 的备份与恢复体系:

对象作用作用域
BackupStorage定义备份数据写入哪里(S3 兼容存储),管理访问凭证命名空间级
BackupClass定义"怎么备份"——Provider 托管(PBM / pgBackRest)还是 K8s Job 方式集群级
Backup一次具体的备份任务,关联 Instance + BackupClass + BackupStorage命名空间级
Restore一次具体的恢复操作,将备份数据还原到目标 Instance命名空间级

💡 一个 Instance 可绑定多个 BackupStorage,每个 Storage 上可配置多个定时备份计划(Schedule),实现不同保留策略的多层备份体系。

核心类型定义参见 backup_types.go 和 restore_types.go。


二、一键配置备份存储(BackupStorage)

所有备份数据都需要写入对象存储。OpenEverest 支持S3 兼容存储(AWS S3、MinIO、Ceph 等)。

通过 Web UI 添加

进入Settings → Backup storages,点击Add backup storage:

填写以下字段即可:

  • Name:存储名称(如s3-prod-backups)
  • Bucket:S3 桶名
  • Endpoint URL:S3 服务端点
  • Access Key / Secret Key:访问凭证

通过 YAML 声明式定义

apiVersion: backup.openeverest.io/v1alpha1 kind: BackupStorage metadata: name: s3-prod-backups namespace: default spec: type: s3 s3: bucket: everest-backups-prod region: us-east-1 endpointURL: https://s3.example.com credentialsSecretRef: name: s3-credentials

完整字段定义见 backupstorage_types.go。


三、在数据库向导中配置定时备份

创建数据库实例时,OpenEverest 向导内置了Backups步骤,一次性完成备份策略配置:

在该步骤中你可以依次完成:

  1. 启用备份:打开 Enable Backups 开关
  2. 选择 BackupClass:平台根据已安装 Provider 自动填充
  3. 创建定时备份计划:
    • 设置 Cron 表达式(如每天凌晨 2 点:0 2 * * *)
    • 选择目标 BackupStorage
    • 配置保留策略
  4. 开启 PITR(Point-in-Time Recovery):将 RPO 缩小到秒级

定时备份计划的底层模型定义在 instance_types.go(InstanceBackupSchedule结构体)。

⏰ 保留策略支持两种模式:count(保留最近 N 份)和time(保留指定时长内的备份,如30d)。不设置则永久保留。


四、创建按需备份(On-demand Backup)

除了定时任务,你还可以随时手动触发一次备份,适合升级前、发布前等关键节点。

通过 Web UI 操作

进入实例详情 → Backups选项卡,点击Create backup → Now:

列表中实时展示每份备份的关键信息:

  • Status:Running→Succeeded/Failed
  • Size:备份文件大小(如1.2Gi)
  • Started / Finished:精确时间戳

通过 CLI 命令行

# 创建按需备份并等待完成 everestctl backup create \ --instance my-mongo \ --namespace everest \ --class percona-backup-mongodb \ --storage my-s3 \ --name pre-upgrade \ --wait # 使用 Retain 策略:删除 Backup CR 时保留 S3 中的原始数据 everestctl backup create \ --instance my-mongo \ --namespace everest \ --class percona-backup-mongodb \ --storage my-s3 \ --deletion-policy Retain

🗑️--deletion-policy Retain适用于合规审计场景:即使用户删除了 Backup 资源,S3 桶中的原始数据仍然保留,防止误删。

命令实现代码见 pkg/cli/backup/create.go。


五、执行数据恢复(Restore)

当数据出现问题(误删、逻辑错误、故障)时,使用备份进行恢复。

两种恢复模式

模式说明适用场景
Backup从某份具体备份恢复完整状态回滚到已知好的时间点
PointInTime将备份流推进到指定日期 / 最新精确恢复到误操作前的秒级时刻

通过 Web UI 恢复

进入实例详情 → Restores选项卡,点击创建恢复任务:

通过 CLI 恢复

# 从指定备份恢复,等待完成 everestctl restore create \ --instance my-mongo \ --namespace everest \ --backup daily-backup-2026-06-28 \ --wait

恢复任务同样遵循完整状态机:Pending → Running → Succeeded / Failed。

命令实现见 pkg/cli/restore/create.go。


六、备份状态与生命周期速查

每个 Backup 和 Restore 对象都有清晰的状态机,便于监控和告警:

状态含义是否终态
Pending已接受,等待执行❌
Running正在执行❌
Succeeded成功完成✅
Failed终态失败✅
Error瞬时错误,控制器可能自动重试❌
Deleting正在清理(仅 Backup)❌

状态枚举定义见 backup_types.go。


七、生产环境最佳实践

实践说明
多层备份策略日常备份保留 7 天,月度归档保留 12 个月,利用多个 BackupStorage 实现
始终启用 PITR支持 PITR 的 Provider 建议开启,将 RPO 从小时级缩小到秒级
升级前按需备份执行版本升级、DDL 变更等高风险操作前,用--wait等待备份完成
定期恢复演练不要只备份不恢复——定期恢复到测试环境,验证数据完整性
Retain 策略保护关键备份合规审计要求的备份使用deletionPolicy: Retain,防止误操作删除

总结

OpenEverest 将数据库备份从"手动脚本"升级为声明式、自动化、可观测的平台能力:

  • ✅定时备份:Cron 驱动,自动执行,自动清理过期备份
  • ✅按需备份:一条命令或一次点击,随时触发
  • ✅多存储支持:同一实例可绑定多个 S3 兼容存储
  • ✅PITR:精确恢复到任意时间点
  • ✅统一状态管理:所有备份 / 恢复任务状态可查询、可等待、可监控

从此,数据安全保障不再依赖某个 DBA 的记忆和习惯,而是由平台自动、持续地保障。

【免费下载链接】openeverest

OpenEverest is an open-source platform for automated database, storage and LLMs provisioning and management. It supports multiple technologies and can be hosted on any Kubernetes infrastructure, in the cloud or on-premises.

项目地址:https://gitcode.com/gh_mirrors/op/openeverest
点击查看免费下载

相关推荐

上一篇:彻底解决机器学习数据痛点:5种缺失值处理方案让模型准确率提升30%
下一篇:ScyllaDB Nodetool Tasks Modules:任务管理器模块查询命令全解析

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进