09 · 运维与发布 · 恢复

备份没恢复过,就不算有备份

运维工程师负责备份、恢复、磁盘和账号到期,保证系统坏了能按演练过的步骤回来。收货失败这类业务告警交给 SRE。

服务器机房

运维工程师对「能回来」负责

应用上线之后,机器、磁盘、证书、备份和账号仍要有人看。运维工程师的特点是用演练代替假设。备份任务显示成功,不代表能恢复出昨天的库存。他定期把备份恢复到隔离环境,核对单据数量,并记下耗时。耗时决定出事时要通知业务停多久。没有这个时间,事故会上只能说「正在处理」。

他也管容量。照片和附件把磁盘写满时,收货会失败。监控要在写满前提醒,并知道哪些目录可以清、哪些是业务附件不能删。删附件等于删证据。证书到期、域名、门禁接口的账号密码,都有日历,不靠某个人的记忆。

变更和权限

生产变更走发布经理的窗口。运维工程师不在业务高峰手工改配置。手工改过的地方写进记录,避免下次发布被覆盖后大家不知道。服务器登录使用个人账号,共用 root 口令要废掉。实施留下的账号到期由他关闭,并跟安全架构的清单对一次。

磁盘里的照片

识别送货单的原图存在应用盘。上线一个月后磁盘告警被忽略,直到写入失败,收货页面报错。运维工程师先清理与业务无关的安装包并扩容,再把原图目录纳入容量告警,阈值提前到百分之七十。事后恢复演练证明数据库能回到故障前,照片目录也在备份里。只备份数据库、不备份原图的方案被改掉,否则更正识别错误时没有对照。

演练记录交给SRE(可靠性)和项目负责人。能恢复,才谈得上可用性承诺。运维工程师把证书、域名和备份演练放在同一张日历上,提前两周告警。到期当天才发现的证书,只能停业务去换。他把上次恢复耗时写在日历旁边,让业务知道一旦要恢复,停机大约多久。不知道多久的恢复,仓库无法安排暂存。日志磁盘和备份磁盘不放同一卷。同一卷写满时,最常见的处理是删掉日志保住备份,结果事故原因也没了。他宁可提前扩容,也不让恢复能力和追查能力互相抢空间。他把告警联系人按班次核对。半夜磁盘告警如果只发给已经离职的实施,备份再完整也没人处理。告警到达人要能执行动作,不能只达到领导。领导看到再转群,已经错过清理窗口。

恢复演练他挑业务低峰,但不挑万事俱备的下午,并留下恢复前后的单据数对照。数对不上,恢复不算完成,只算备份文件被解开过一次。步骤写成谁都能执行的顺序。半夜告警发给谁、第一动作是不是重启,交给 SRE 的值班说明;本岗保证备份真的能解开、磁盘和证书真的还在日历上。库备份和原图对象存储要能回到同一个业务日。库回到昨天、照片还停在上周,更正识别时没有对照。堡垒机会话超时后,未完成的恢复步骤必须能从演练记录接着做,不能靠值班人记得停在哪一步。恢复步骤里要写下账号从哪取,不能写「用原来那个密码」。

回到时间线

最近一次恢复演练是什么时候

运维按恢复时间来准备。