站点运营

站点运营:备份与恢复自查,别等数据丢了才发现备份打不开

很多站点不是没有备份,而是备份看起来存在却用不上:数据库导到一半中断、文件只留在同一块磁盘、压缩包密码没人记得。本文按栏目梳理需要备份的内容、合理的频率与保留策略、一次可执行的恢复演练步骤,以及容易被忽略的细节和月度自查清单。

站点运营

站点运营:备份与恢复自查,别等数据丢了才发现备份打不开

很多站点出事不是因为没有备份,而是因为备份“看起来存在”。文件躺在服务器同一块磁盘上,压缩包设了密码却没人记得,数据库导出到一半被中断——真到需要恢复的时候才发现用不上。这篇自查清单不聊工具选型,只聊怎么确认手里的备份在关键时刻能派上用场。

一、先列清楚:哪些东西必须进备份

只备份数据库是常见误区。数据库里是内容,但让站点跑起来的不只是内容。

  • 数据库:文章、用户、评论、配置项,通常是恢复时最关键的一份。
  • 上传目录:图片、附件、音视频。这部分往往体积最大,也最容易在迁移时被漏掉。
  • 程序与模板文件:主题改动、插件、自定义模板片段。如果改过代码却没进版本控制,它就是孤本。
  • 配置文件:数据库连接信息、伪静态规则、环境变量。
  • 证书与密钥:HTTPS 证书私钥、第三方接口密钥,丢了要重新申请和配置。
  • 定时任务与脚本:备份、清理、同步这些 crontab 任务,很多人在迁移后才发现少了几个。

二、频率和保留策略:别只留最近一份

备份频率应该跟着“你能承受丢多少数据”走,而不是跟着习惯走。

  • 数据库:访问量正常的站点可以每天一次全量;更新频繁的站点考虑每天多次增量或开启二进制日志。
  • 文件:上传目录按周全量即可,程序文件在每次改动后单独留一份。
  • 保留:常见做法是保留最近 7 天的日备、最近 4 周的周备、最近 3 个月的月备。只留最近一份,等于被误删的内容也会被一起覆盖掉。
  • 把“动手前先备份”写进流程,尤其是批量删文章、清评论、调整栏目结构之前。

三、恢复演练:能打开压缩包不等于能恢复

建议每季度至少做一次完整演练,找一台测试机,不要在生产环境上试。

  1. 准备独立环境,域名可以用临时域名或本地 hosts 指向。
  2. 导入数据库备份,注意字符集和版本差异,导入报错要记录下来。
  3. 恢复文件目录,核对权限与属主,别用 777 图省事。
  4. 改回测试环境的连接配置,检查首页、栏目页、详情页、后台登录是否正常。
  5. 抽查图片和附件能否打开,确认上传目录完整。
  6. 记录整个恢复耗时。如果明显超出预期,说明备份结构需要调整,比如把大文件拆开单独存放。

四、几个容易被忽略的细节

  • 备份文件放在哪里:和站点同一台服务器、同一块磁盘,服务器一挂就一起没了。至少同步一份到对象存储或另一台机器。
  • 备份文件能否被公网访问:放在网站根目录下的 backup 文件夹,等于把数据库公开下载。放到 web 目录之外,或加上访问限制。
  • 脚本里的密码:备份脚本中写死的数据库密码、云存储密钥,文件权限要收紧,也别提交到公开仓库。
  • 任务是否真的在跑:备份失败往往是静默的。加一条失败告警,或让脚本成功后发一封邮件,长时间收不到就说明有问题。
  • 备份对站点的影响:大表导出可能锁表并占用磁盘 IO,尽量安排在访问低谷,导出后检查磁盘剩余空间。
  • 清理旧备份:只增不删的策略迟早把磁盘写满,删除规则也要写进脚本。

五、月度自查清单

  1. 确认最近一次数据库备份和文件备份的时间、大小正常。
  2. 确认备份文件已同步到异地或对象存储。
  3. 随机下载一个备份包,试解压,确认没有损坏。
  4. 确认备份目录不在公网可访问路径下。
  5. 检查备份任务的失败告警是否有效。
  6. 检查磁盘剩余空间,确认旧备份清理按计划执行。
  7. 如果本季度还没做恢复演练,安排一次。
备份的价值不在于文件有多少个,而在于你需要它的那一天,它能不能被打开、被导入、被访问。把恢复演练当成例行工作,比多买一块硬盘更有用。