站点运营

站点运营:备份与回滚演练自查,别在改版出事时才发现没有退路

备份和回滚常被当成运维的事,真出问题时却是做内容的人一起承担后果。这篇整理一份自查思路:备份该覆盖哪些文件、频率怎么定、副本放在哪里、回滚分成几层、多久演练一次,以及那些看起来有备份、实际恢复不了的常见坑。

站点运营

站点运营:备份与回滚演练自查,别在改版出事时才发现没有退路

很多人把备份和回滚归到运维的活里,觉得做站点运营的人只要管内容就行。但真正出事的那一刻,最先被追问的往往是:页面没了、栏目地址变了、旧版本还能不能回来。备份和回滚方案不是技术炫技,它是站点能不能在半天内恢复正常的底线。

先确认备份到底覆盖了什么

很多团队说有备份,仔细一问只备份了数据库。数据库能还原文章,还原不了图片、伪静态规则和证书。自查时逐项对照下面这份清单,缺哪一项就补哪一项:

  • 数据库:内容、用户、栏目、设置的唯一来源;
  • 上传目录与静态资源:图片、附件、下载文件,丢了很难补;
  • 站点配置文件:Web 服务器规则、重定向、伪静态、安全策略;
  • SSL 证书与私钥:过期或丢失会直接导致整站打不开;
  • 计划任务与自定义脚本:定时发布、清理日志、生成地图;
  • 第三方侧的关键配置:CDN、解析记录、搜索平台的验证文件与提交设置。

这份清单不用一次做完美,但要有一份写下来的版本,并且注明每项由谁负责。

备份策略:频率、份数、位置

频率跟着更新节奏走

日更的站点,每日一次全量加多次增量是常见做法;更新很少的站点,也不必为了安心每天跑全量,按每周一次加改版前手动备份更实际。关键是改版、迁移、批量替换之前,先手动做一次完整备份,这一步不能省。

别把备份放在同一台机器上

备份文件和站点放在同一块磁盘,等于没有备份。至少做到本地一份、异地或对象存储一份,并保留多个时间点,比如近七天每天一份、近四周每周一份。保留策略写清楚,才不会磁盘满了被脚本自动删掉关键副本。

没验证过的备份等于没有

定期挑一份备份,在测试环境里真实恢复一次,检查首页和几个栏目页能否打开、图片是否完整、伪静态和重定向是否生效。恢复失败的原因通常是备份本身不完整,或者恢复步骤只有某个人脑子里有。

回滚方案要提前写成步骤

回滚不等于「还原数据库」。按影响范围分层设计,执行时才有余地:

  1. 单页面层:某篇文章出错,直接改回旧版本即可;
  2. 单栏目层:新栏目结构有问题,先下线入口、保留旧路径;
  3. 整站层:模板或配置大面积出错,用最近一次可用快照整体回退;
  4. 配置层:重定向、缓存、证书等规则类改动,单独留一份可对照的旧配置。

每层都要写清触发条件、执行人、预计耗时和验证方式。回滚完成后别忘了清理页面缓存与 CDN 缓存,否则打开的还是旧副本,容易误判为回滚失败。

判断回滚是否成功的标准,应该提前写下来,比如首页可访问、主要栏目返回 200、关键页面内容与预期一致。没有标准,就只能靠感觉。

演练:把恢复流程真跑一遍

  • 每季度安排一次,选访问量低的时段;
  • 指定一个人按文档操作,其他人只看不提示,看文档是否写得够清楚;
  • 记录实际耗时,和预期对比,找出卡住的环节;
  • 演练结束后更新文档、联系人和值班安排。

演练的价值不在于流程多完美,而在于把「谁能做、要多久、先做哪一步」变成团队共识。

几个常见的坑

  • 只备份数据库,忽略上传目录;
  • 备份脚本报错但没有告警,安静地失败了好几个月;
  • 备份被加密,密钥却没人保管;
  • 恢复后没有清缓存,误以为数据没回来;
  • 直接在正式环境做恢复测试,把问题扩大;
  • 备份文件堆在一起没有命名规范,出事时不知道哪份是干净的。

备份和回滚平时看不见价值,出事那天却能决定站点是停半天还是停一周。花一个小时把清单列出来,比事后通宵抢救划算得多。