运维灾备演练实操,模拟服务器宕机恢复网站:运维灾备演练
服务器真宕机时才翻备份,往往已经来不及。
这篇运维灾备演练实操,用一台备用服务器模拟主站彻底不可用,带你从备份检查一路做到网站恢复访问,把“备份文件”变成“真正能顶上的站点”。
演练前要确认的三件事
第一,备份文件必须存在且可解压。
登录备份存储位置,执行 tar -tzf /backup/site_20250101.tar.gz | head -20,能正常列出文件才算有效。
如果解压报错,演练直接失败,先修备份。
第二,备用服务器环境要与主站一致。
重点核对 PHP 版本、MySQL 版本和 Nginx 配置。
用 php -v、mysql --version、nginx -v 三条命令分别确认。
版本差距过大,恢复后容易出现白屏或 500 错误。
第三,DNS 解析 TTL 要提前调低。
在域名控制台把主站 A 记录的 TTL 从 3600 改为 60,至少提前 10 分钟生效。
这一步决定了故障切换时用户多久能访问到备用站点。
模拟宕机与数据恢复
演练时不要直接关生产机,用防火墙模拟更安全:iptables -A INPUT -p tcp --dport 80 -j DROP,让网站对外不可访问,但服务器本身还能操作。
下一步在备用服务器上恢复数据。
先还原网站文件:tar -xzf /backup/site_20250101.tar.gz -C /www/wwwroot/,再导入数据库:mysql -u root -p site_db < /backup/site_db_20250101.sql。
两条命令都执行完,用 ls /www/wwwroot/site/ 和 mysql -u root -p -e "SHOW TABLES;" site_db 确认文件和表都在。
如果站点使用宝塔面板,可以在“网站”中新建同名站点,把解压后的目录设为根目录,再在“数据库”中新建同名库并导入 SQL 文件。
切换解析并验证访问
修改域名 A 记录指向备用服务器 IP,保存后等待 TTL 生效。
用 dig +short yourdomain.com 查看解析是否已更新,返回备用 IP 即切换成功。
验证不能只看首页。
依次检查:首页能否打开、登录功能是否正常、图片和 CSS 是否加载、数据库读写是否正常。
可以用 curl -I http://yourdomain.com 看返回状态码,200 表示正常,502 或 500 说明后端还有问题。
关键判断:如果首页能开但登录报错,通常是数据库没导入完整或配置文件里的数据库账号密码不对。
容易踩的坑
- 备份文件有,但从没解压测试过。演练必须实际解压一次,否则等于没备份。
- 备用服务器没装主站依赖的 PHP 扩展,恢复后页面报 500。提前用
php -m对比扩展列表。 - 只改了 A 记录,忘了 www 的 CNAME 或子域名解析,导致部分用户仍访问旧站。
- 数据库字符集不一致,导入后中文变乱码。导出时加
--default-character-set=utf8mb4。
演练收尾与效果确认
确认备用站点运行正常后,把 DNS 记录切回主站 IP,删除防火墙模拟规则:iptables -D INPUT -p tcp --dport 80 -j DROP。
最后记录本次演练耗时:从模拟宕机到备用站可访问用了多少分钟。
这个数字就是真实故障时的恢复时间参考。
建议每季度做一次,并确保备份文件至少异地存一份。
运维灾备演练的核心不是走流程,而是确认备份真的能恢复、切换真的能生效。 只要这两点验证通过,服务器宕机时你就有底。
常见疑问
演练会不会影响线上用户?
用防火墙模拟或单独备用服务器演练,不影响生产环境。
但调低 DNS TTL 和切换解析会短暂影响访问,建议在低峰期操作。
多久做一次灾备演练合适?
业务变动频繁时建议每季度一次;
稳定业务至少每半年一次。
每次演练后更新恢复文档和联系人清单。
没有备用服务器怎么演练?
可以临时用一台云服务器按量付费创建,演练完释放。
重点是走通恢复流程,而不是长期保留备用机。