Supabase 这个功能挺实用:给数据库开个测试分支
最近优化网站,缺一个测试数据库。
在已经有用户的情况下,如果测试的时候连接生产库,注册账号、修改权限、删除数据,都可能影响线上用户。代码分支只能隔离代码,数据库也得单独准备。
发现了 Supabase 的 Branching 功能,可以从现有项目创建一个独立测试后端,再把网站的 Preview 版本接过去。这样就能用测试账号验证改动,不用单独搭一个测试数据库。
简单分享一下这个功能。
Branching 能帮我们做什么
可以把它理解为从现有 Supabase 项目开出的测试环境。每个分支有独立的数据库实例、API 地址和凭据,也包含 Auth、Storage 等服务,适合测试新增字段、数据库迁移和访问权限。官方功能介绍
默认不复制线上业务数据和存储对象,需要自己准备测试账号与样例数据。创建后也要核对表结构和迁移记录,不能默认所有东西都已经同步齐全。
还有一点很重要,Branching 需要 Pro 或更高方案,免费版本的用不了。
1. 在控制台创建分支
Supabase 支持 GitHub 集成,也能直接在 Dashboard 创建。
进入项目,在顶部当前分支名称旁打开下拉菜单,选择 Create branch。
给分支起一个名称。这次不使用 Include data,保持无生产数据的方式。该选项需要 PITR 附加功能,复制出的数据仍应按生产敏感数据保护。控制台分支管理仍在预览阶段,具体界面以实际显示为准。控制台操作说明
2. 让测试网站连接这个分支
分支就绪后,先在顶部切换到测试分支,再从 API 设置和连接面板取得该分支自己的 URL、Key 和数据库连接串。
我只给 Vercel 的目标 Preview 代码分支配置这些变量,没有覆盖 Production。保存后重新部署预览版,让新配置生效。服务端 Secret Key 或 service_role Key 只能放在服务端,不能进入浏览器代码。
这里还要多检查一遍支付、邮件、通知和上传配置。数据库隔离了,这些服务仍可能指向真实系统。没有专用测试配置的外部服务,我会先禁用。
3. 用测试数据验证功能
这一步就根据各自的业务场景测试
这次我创建了合成账号和样例文章,分别用匿名、免费、有效会员和过期会员身份验证页面与接口。
除了看功能能否运行,还要确认测试记录只出现在分支里,生产库没有对应写入。
Branching 提供的是测试环境,问题仍需要靠测试发现。
4. 测完记得关掉
验证通过后,数据库结构改动仍要经过审查,再决定是否合并或按迁移流程发布。分支里的测试账号和样例数据不会作为业务数据自动合入生产。分支数据说明
本轮测试后,我保留了分支并将它暂停。
暂停后,依赖它的 Preview 也无法正常登录和读取内容,下一轮测试时再恢复。你使用时要查看该分支实际提供的暂停或清理操作;不要把分支暂停等同于所有付费项目都可以暂停。确定不再需要的分支,保留必要迁移和测试记录后再删除。截至写文的日期,默认 Micro 分支计算费用从 0.01344 美元/小时起,运行 8 小时约 0.11 美元。这次用下来,我觉得它最实用的地方,就是需要测试数据库改动的时候,可以直接从现有项目开一个隔离环境。



