
步骤:1) 确认服务器时区为Asia/Hong_Kong(UTC+8),在服务器上运行date或timedatectl查看并记录。
2) 分析业务高峰(使用GA、日志、监控指标),列出低峰时段作为候选窗口(例如周日凌晨00:00-04:00)。
3) 评估影响范围:列出受影响的服务、API、静态资源与第三方依赖,标注优先级与是否可被临时降级。
4) 与产品/客服沟通确定可接受的最长停机时间(SLA界限),明确回滚条件与沟通节点。
步骤:1) 列出每一步骤的执行人(运维、开发、DBA、网络),并写明联系人及电话/IM。
2) 包含前置检查(备份、快照、监控告警状态、DNS TTL)、维护动作(部署、迁移、升级)、后置验证(健康检查、回归测试)。
3) 为每个步骤标注预计耗时、超时处理和回滚命令。把命令示例写清楚(如docker-compose down/up、rsync命令、mysqldump/restore命令)。
步骤:1) 数据库:做一致性备份(mysqldump --single-transaction 或 xtrabackup),并保存到异地对象存储(阿里OSS/腾讯COS/S3)。
2) 文件/静态资源:rsync到备用服务器或存储桶,确保增量与校验(rsync -av --checksum)。
3) 虚拟机/云盘快照:在香港区域对重要实例做快照并标注时间与用途。记录快照ID及恢复步骤。
步骤:1) 将DNS TTL提前降低到60-120秒,至少在维护前24小时完成以便生效。示例:修改解析记录并观察生效。
2) 启用健康检查/连接drain:对负载均衡器标注维护目标,先将流量从待维护节点上逐步导出(drain connections)。
3) 关闭自动扩缩容或自动更新任务,避免在维护窗口触发非预期操作。
步骤:1) 提前通知:在维护开始前72小时、24小时、1小时分别发送通知。邮件主题示例:【维护通知】网站将于YYYY/MM/DD HH:MM(HKT)进行短暂停机。
2) 通知内容包含:维护时间、预计停机时长、影响范围、紧急联系方式、服务恢复后将发送确认邮件。
3) 发送渠道:邮件、站内公告、SMS/WhatsApp、社交媒体。对企业客户使用专属客服群单独通知。
步骤:1) 维护页托管:在CDN上预先部署静态维护页面并设置规则(当origin返回特定状态或指定IP段时展示维护页)。
2) 服务降级:对非核心接口返回缓存或只读模式,确保关键查询仍可响应或给出明确提示。
3) 测试:在预生产切换到维护页,查看不同区域和设备的展示效果,确认无缓存问题。
步骤:1) 维护开始前10分钟再次确认所有负责人就位并截图关键监控指标。
2) 将目标节点设置为drain,等待现有连接完成或强制断开(记录耗时)。
3) 执行部署/升级脚本:先在灰度/一台节点上验证,确认无误再并行到其他节点。
4) 对DB执行结构变更时采用在线DDL工具或分批次变更,记录每步SQL及回滚SQL。
步骤:1) 自动化健康检查:检查HTTP 200、数据库连接、队列长度、关键交易(下单、登录)。
2) 手工回归:产品/测试人员执行关键路径测试并在群组中回报结果。
3) 监控观察期:维护后至少观察30-60分钟,确认无异常告警再结束维护窗口。
步骤:1) 明确触发回滚的条件(关键功能失败、数据损坏、性能严重下降)。
2) 回滚命令示例:应用回滚使用git revert/rollback脚本,数据库回滚使用备份恢复或binlog回放步骤并先在从库验证。
3) 回滚后再次执行健康检查,并向用户发送回滚通知说明原因与后续计划。
步骤:1) 恢复节点:将节点从drain移回并逐步增加流量,观察错误率与延迟。
2) DNS恢复:如果降低了TTL,维护结束后可将TTL恢复到正常值(例如300-3600秒)。注意DNS缓冲时间。
3) CDN刷新:如有静态资源更新,执行CDN刷新命令,或采用版本化URL避免缓存冲突。
步骤:1) 发送恢复通知:维护结束时发送邮件与站内公告,说明实际停机时长、影响范围与已知问题。
2) 提交事后报告:记录实施过程、出现的问题、原因分析与改进措施(RCA),分配后续任务并设定完成期限。
3) 将报告上传到内部知识库并在下次迭代中优化Runbook。
步骤/模板:主题:【维护通知】服务计划停机 YYYY/MM/DD HH:MM(HKT)
正文:尊敬的用户:我们计划于YYYY/MM/DD HH:MM(HKT)对香港机房的服务进行例行维护,预计停机时长约X小时。受影响范围:XXX。维护期间部分功能将不可用。紧急联系:support@example.com / 电话:+852-XXXXX。谢谢理解。
结束句:维护完成后我们将第一时间通知并发布详细报告。
站内公告模板:亲爱的用户:系统将于YYYY/MM/DD HH:MM(HKT)进行维护,预计X小时。维护期间部分功能可能受限,给您带来不便敬请谅解。紧急问题请联系support@example.com。
短信模板:【服务维护】本服务将于YYYY/MM/DD HH:MM(HKT)维护,预计X小时,咨询:+852-XXXXX。
问:为什么要提前降低DNS TTL,最低需要提前多久设置?
答:降低DNS TTL能让域名解析更快切换到备用IP或回滚后更快生效。建议至少在维护前24小时将TTL降到60-120秒,以确保全球DNS缓存刷新,避免切换延迟导致用户访问异常。
问:维护时如何保证数据库变更安全且可回滚?
答:先做一致性备份并在从库先执行变更验证,优先使用在线DDL或分批修改,记录所有变更SQL和对应回滚SQL,若出现异常按回滚步骤恢复数据并在预生产验证后再同步到生产。
问:用户收到维护通知仍抱怨停机时间过长怎么办?
答:沟通要透明:说明维护必要性、已经采取的降级措施和预计恢复时间;提供临时替代方案(只读入口、API降级);对于重要客户提供单独沟通渠道和补偿方案,并在事后报告中列出改进计划以减少下次影响。