启用存储自动扩容后,如何设置上限以避免费用失控?

解读

国内面试官问这道题,核心不是让你背控制台路径,而是考察三件事:

  1. 是否理解**“自动扩容”≠“无限扩容”**,费用风险点在哪里;
  2. 能否把技术配置财务治理结合,给出可落地的“上限”方案;
  3. 是否熟悉国内云财务合规(预算、标签、账单分组)与Google Cloud 原生能力的交集。
    答得太浅(“控制台填个 30 TB”)会被追问“财务审批怎么过”;答得太深(“写个 Cron 轮询 Prometheus 发钉钉”)会被嫌重。要给三层防线,每层都点到即止。

知识点

  • Cloud SQL 自动扩容触发阈值:可用空间 < 5 % 或 2 GB(取小者),每次步长 10 %,无默认上限
  • 配置上限的三处位置
    ① 实例级 max storage size(gcloud/sqladmin API 均可设);
    ② 项目级 Budget Alert(Cloud Billing Budget,支持人民币阈值);
    ③ 组织策略 Resource Quota(约束条件 sql.restrictMaxStorageGb)。
  • 国内财务合规要点:预算需提前录入公司费控系统(如金蝶、用友),标签(team/cost-center)必须和增值税发票抬头对应,否则无法抵扣。
  • 观测指标cloudsql.googleapis.com/database/disk/quota/utilization,建议推送到阿里云可观测或企业微信机器人,实现双通道告警(Google Monitoring + 国内 IM)。
  • Terraform 代码片段settings.disk_autoresize = true 同时 settings.disk_autoresize_limit = 500(单位 GB),CI 流水线必须加 OPA 校验,防止开发手滑改大。

答案

我给客户做方案时,三层上限防线一起上:

  1. 实例级硬顶:用 gcloud 命令设死上限,MySQL 单实例最大 30 TB,但我只给业务 2 TB,留 20 % 缓冲;
    gcloud sql instances patch prod-order --storage-auto-increase-limit=2048
  2. 项目级预算:在 Cloud Billing 建人民币预算 5 万元/月,110 % 触发邮件+短信,120 % 直接调用公司费控 API 停写账号权限(国内财务强制要求)。
  3. 组织策略:在 Google Cloud Organization 节点加约束 sql.restrictMaxStorageGb=3072任何尝试调高到 3 TB 以上都会被拒绝,Terraform Plan 直接失败,无需等人审批
    上线后,把 disk/quota 指标推送到企业微信告警群5 分钟无 ack 就电话值班。三层下来,费用失控概率降到财务可接受范围(过去 12 个月最大单实例账单 < 预算 80 %)。

拓展思考

如果面试官继续追问“业务突发要临时突破上限,但财务流程需 48 小时”,可以答:

  • 提前在预算里留 10 % 应急 buffer,并通过标签白名单机制(emergency=true)快速切换计费账号到“预充值子项目”,子项目单独开票,不影响主体预算;
  • Cloud SQL 只读实例横向扩容代替主库扩容,存储压力不变,费用线性可控
  • 事后 24 小时内提交《云资源变更说明》给财务附 Google 官方账单 PDF 与发票原件走内部事后审计而非事前审批,兼顾效率与合规。