启用存储自动扩容后,如何设置上限以避免费用失控?
解读
国内面试官问这道题,核心不是让你背控制台路径,而是考察三件事:
- 是否理解**“自动扩容”≠“无限扩容”**,费用风险点在哪里;
- 能否把技术配置与财务治理结合,给出可落地的“上限”方案;
- 是否熟悉国内云财务合规(预算、标签、账单分组)与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 校验,防止开发手滑改大。
答案
我给客户做方案时,三层上限防线一起上:
- 实例级硬顶:用 gcloud 命令设死上限,MySQL 单实例最大 30 TB,但我只给业务 2 TB,留 20 % 缓冲;
gcloud sql instances patch prod-order --storage-auto-increase-limit=2048 - 项目级预算:在 Cloud Billing 建人民币预算 5 万元/月,110 % 触发邮件+短信,120 % 直接调用公司费控 API 停写账号权限(国内财务强制要求)。
- 组织策略:在 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 与发票原件,走内部事后审计而非事前审批,兼顾效率与合规。