状态文件丢了怎么办:Terraform State 灾难恢复与生产级后端架构
概述 凌晨两点,手机炸了。某出行项目的运维群弹出一连串告警:RDS 主从切换失败、EIP 绑定状态异常、安全组规则缺失。排查了一圈,根因是有人手动在控制台改了安全组规则,Terraform 的 state 文件和云上实际状态不一致,一次 terraform apply 把手动修改的资源全部"纠正"回旧配置——直接覆盖了线上紧急热修复。 这不是个例。Terraform 的 state 文件是整个 IaC 体系的"唯一真相源"(Single Source of Truth),但它同时也是最脆弱的环节。state 文件丢失、锁死、配置漂移,这三个问题我在多个生产环境中全部遇到过。这篇文章不讲 Terraform 基础语法(相关文章:Terraform 基础设施即代码入门 已经讲过),而是聚焦于:生产环境中 state 文件怎么存、怎么锁、怎么迁移、出了事怎么救。 你会看到: state 文件的内部结构和它为什么这么重要 S3 + DynamoDB 远程后端的完整生产级配置(含权限隔离方案) 状态锁卡死的排查和解除方法 配置漂移的检测、修复和预防策略 状态文件拆分迁移的实战步骤(附 terraform state mv 的避坑指南) 一个真实的"state 文件被误删"灾难恢复全过程 state 文件到底是什么 先说人话:state 文件就是 Terraform 的"资产清单"。 你用 Terraform 创建了一台 EC2、一个 RDS、一个 VPC,Terraform 需要记住这些资源的 ID、属性、依赖关系。不然下次 terraform plan 的时候,它怎么知道哪些资源已经创建过、哪些需要更新? state 文件就是一个 JSON 文件,记录了所有被 Terraform 管理的资源的当前状态。每次 terraform apply 后自动更新。 state 文件的内部结构 打开一个 terraform....