Agent Skills
返回列表
🔒

数据库备份

IT 运维与安全 更新于 2026.08.29

将以下提示词粘贴到你的 AI 对话框中:

请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3c6cb52e/1991513ccie-png-database-backup。

技能介绍

你要解决的问题

数据库备份听起来简单——写个 crontab 定时 pg_dump 或 mongodump 就行。但当数据库规模增长到几十 GB 甚至 TB 级别,需要考虑的远不止"定时导出":全量备份耗时太长、增量备份恢复链路容易出错、保留策略不合理导致存储爆炸、备份完从没验证过能否真正恢复……等到出事才发现备份文件是空的,代价往往无法挽回。

这个技能要解决的,就是把这些散落的决策点串成一套可执行的备份方案。

核心能力与关键步骤

技能支持 PostgreSQL、MySQL、MongoDB 三种主流数据库,覆盖全量、增量、差异和基于 WAL/oplog 的时间点恢复(PITR)四种备份类型。工作流程分为六个阶段:

  • 评估需求:确认数据库类型、可接受的 RPO(恢复点目标)和 RTO(恢复时间目标),判断是否需要应用级锁定或快照来保证一致性。
  • 选择策略:根据 RPO 要求选择备份类型。PITR 能把数据恢复到任意时刻,RPO 接近零,但依赖 WAL 归档或 oplog 的持续记录。
  • 生成脚本:产出带压缩(gzip、lz4、zstd)、可选加密(GPG、AES-256)、时间戳命名和错误处理的 Shell 脚本,输出日志便于监控。
  • 调度与保留:通过 cron 或 systemd timer 自动化执行,定义保留策略(如 7 份日备、4 份周备、12 份月备)并清理过期文件。
  • 验证完整性:检查备份文件非空、校验和有效,定期在 staging 环境做恢复演练。
  • 文档与监控:记录备份计划、存储位置和恢复步骤,对备份失败或缺失设置告警。

适用边界与注意点

  • 超大数据库本地磁盘不够时,可以直接流式写入对象存储,例如 pg_dump | gzip | aws s3 cp - s3://bucket/backup.gz,避免本地磁盘被撑爆。
  • 备份期间有活跃写入时,PostgreSQL 可用 --snapshot,MongoDB 可用 --oplog 获取一致性快照;MySQL 的 InnoDB 热备建议用 Percona XtraBackup,避免锁表。
  • 如果数据库启用了 TDE(透明数据加密),密钥必须单独备份,否则恢复时无法解密。
  • 从副本备份前要确认复制延迟接近零,否则备份出来的可能是过期数据。
  • 凭据不要硬编码在脚本里,建议放在 Vault 或云厂商的 Secrets Manager 中,并支持轮换。

最后一点:备份的价值不在于"备份过",而在于"恢复成功过"。这个技能把恢复验证纳入了工作流,但真正的信心来自定期的恢复演练。

使用场景

  • 生产环境的 PostgreSQL 库需要每日凌晨做全量备份,压缩加密后上传到云对象存储,并保留 30 天。
  • MongoDB 副本集要开启 oplog 备份以支持按时间点恢复(PITR),把可接受的数据丢失窗口降到最低。
  • 团队需要在 staging 环境定期演练恢复流程,验证备份文件是否真的能完整还原,而不是出事时才发现备份是空的。
  • 数据库体积增长过快,本地磁盘放不下全量备份,需要把备份直接流式写入云端对象存储,避免撑爆磁盘。

适合人员

  • 独立运维或全栈工程师:独自维护生产数据库,需要一套能直接落地的备份脚本、cron 配置和恢复步骤,而不是自己翻文档拼凑。
  • 数据库管理员(DBA):同时负责多个 PostgreSQL/MySQL 实例,需要为每个库统一规划 RPO/RTO 目标并定期组织恢复演练。
  • 小团队技术负责人:团队没有专职 DBA,希望备份任务有明确的保留策略、失败告警和书面化的恢复流程,出问题时能立即照做。