使用 PlanetScale 部署
Serverless MySQL,分支、水平分片和全球复制。
平台进阶
为什么
PlanetScale 基于 Vitess(YouTube 使用),非阻塞 schema 变更、数据库分支预览和代理层连接池无限连接。平台即服务采用率 2024 年增长 24%,团队从虚拟机管理转向 git push 部署。
the cloud infrastructure market reached $330B in 2024, growing 22% year-over-year (Synergy Research),PaaS 层捕获了大多数新工作负载。
何时使用
需零停机迁移、分支和水平扩展的 MySQL 应用用 PlanetScale。需外键(不支持)时避免。
如何做
1. 创建 — pscale database create mydb
2. 分支 — pscale branch create dev main(DB 的 git)
3. 连接 — pscale connect mydb main --port 3309
4. 迁移 — 非阻塞,无表锁
5. 部署请求 — pscale deploy-request create dev main
6. 提升 — schema 变更应用到生产
7. Shell — pscale shell mydb main
示例
# 创建数据库和分支
pscale database create mydb --region us-east-1
pscale branch create preview main
# 本地连接
pscale connect mydb preview --port 3309
# 现在 mysql -h 127.0.0.1 -P 3309 可用
# 部署 schema 变更
pscale deploy-request create preview main
pscale deploy-request list mydb main
pscale deploy-request deploy mydb main 1
# 连接字符串(service token 无需密码)
mysql://user:pass@host:3306/mydb?ssl={"rejectUnauthorized":true}
常见问题
- ⚠无外键 — PlanetScale 不强制 FK,应用逻辑处理
- ⚠部署请求被拒 — schema 变更不兼容,pscale deploy-request show 查原因
- ⚠环境间配置漂移 — 使用基础设施即代码(Terraform/Pulumi)保持 dev/staging/prod 一致
最佳实践
- ✓预览部署用数据库分支 — 每 PR 获自己 DB 分支
- ✓所有 schema 变更用 pscale deploy-request — 审查、可逆、非阻塞
- ✓设置健康检查和优雅关闭 — 处理 SIGTERM 以在退出前排空进行中的请求