基于 GitHub 的数据库 CI/CD 最佳实践
DORA 调研报告
这一结论并不令人意外。问题是,该怎么做?
Database DevOps 的关键要素
SQL 审核
主要包括:
该变更正确实现了业务逻辑,即业务正确; 该变更不会引起潜在的数据库性能、安全、可用性、可管理性等问题,即架构正确。
在 SQL 审核步骤,开发团队一般负责「业务正确」,DBA 团队一般负责「架构正确」。由于两个团队多数时候是各自独立的,流程割裂也就成了必然。DevOps 理念期望通过将 Ops 与 Dev 融合来解决此类问题。当组织中拥有 DBA 角色时,我们很难快速将两个团队直接合并,也不能激进的将所有责任丢给开发团队,一种可行的策略是,在保留 DBA「架构正确」审核流程的同时,将相关能力前置到开发团队进行预审核,这样可以明显降低正式审核不通过导致的发布延迟几率。而如果组织中缺乏 DBA 类角色,对开发团队进行「架构正确」审核能力赋能则变得尤为重要。
SQL 发布
主要包括:
语句可以被正确执行。
常见问题如连接错误的库、权限不足、对象名冲突、语法错误等;语句执行没有遗漏。
如果需要执行的脚本较多,或是面对多库批量执行,多环境流水发布的情况,都可能产生遗漏。语句执行过程不影响业务。
常见问题如硬件资源耗尽、长时间锁表等。
避免语句执行错误除了做好前述的审核工作,更关键的在于减少人工环节。无数的惨痛教训让我们认识到,越多的人工环节,误操作的几率越大。SQL 语句的执行过程应该尽可能引入自动化流程,通过预先配置的流水线,让通过审核的语句自动的应用到目标数据库中。而为了不让变更影响到业务的正常运行,各类零停机变更技术应该被广泛采用,特别是针对数据量庞大的库。
将 SQL 审核能力前置到开发团队;
自动化的变更发布。
VCS 集成的 SQL 审核
VCS 集成的 SQL 发布
Bytebase VCS Integration Issue View
一个完整的 Database CI/CD 流程
开发者将变更 SQL 脚本提交到代码分支; 触发 Bytebase 提供的 SQL Review Action 进行自动化 SQL 审核,并给出修改建议; 修改完成后的 SQL 脚本合并入主分支; 自动触发发布流程,脚本将被推送到 Bytebase 工具中; DBA 或其他审核者利用 Bytebase 内置的自动审核能力对变更语句进行二次确认; 核准后的语句自动在目标库中执行; 变更完成后的数据库最新 Schema 结构将被自动回写入代码仓库; 确认变更完成后,触发下一阶段的应用发布流程。
有经验的开发者一定联想到了生产环境的复杂性。
如果有大量数据库要批量变更怎么办?
如果有多个环境要实现流水发布怎么办?
如果多个开发者同时提交脚本怎么办?
......
请关注 Bytebase 后续文章,Bytebase 将从最基础的配置流程开始,一步步带您走进 Database DevOps 的世界。🌍
Rewind the PlanetScale Rewind | 拆解硅谷当红科技公司如何做 Product Marketing