数据库版本控制是管理和跟踪数据库 schema 及相关数据随时间变化的实践。通常来说,我们使用版本控制系统和一些相关工具来保留对数据库所做修改的历史记录,使团队能够追踪变更、有效协作,并安全地部署更新。 一方面,使用版本控制系统 (Version Control System, VCS) 来管理代码已经成为事实上的标准;另一方面,采用 VCS 或类似工具仍处于早期阶段。
以下是数据库版本控制的一些难点以及 Bytebase 如何能帮你解决这些问题😉。
版本控制通过提供一个集中的存储库来共享和管理数据库变更,以促进团队成员之间的协作。Bytebase 在这方面类似 GitLab 和 GitHub,为开发人员和 DBA 提供了一个协作完成数据库变更的工作空间。
版本控制系统记录了对数据库 schema 和相关脚本所做变更的历史记录。这些历史记录包括谁提交了变更、何时进行的以及为何变更等详细信息。Bytebase 会捕捉每个变更历史。
通常来说,数据库版本控制依赖于迁移脚本,这些代码文件定义了对数据库 schema 的更改。这些脚本通常包含 SQL 语句或其他特定于数据库的命令,用于创建、修改或删除数据库对象。在 Bytebase 中,可以使用变更列表 来组合编排迁移脚本。
版本控制系统支持分支,使团队能够同时处理不同的功能或变更。Bytebase 为数据库更改提供了类似的分支功能。
通过保留变更历史记录,版本控制可以实现对数据库更新的可控部署。如果出现问题,团队可以回滚到先前版本的数据库 schema 和相关数据。Bytebase 提供以下回滚选项: 数据回滚。使用像 MySQL binlog 的撤销日志来回滚数据更改。
从备份中恢复和时间点恢复 (PITR)。可以指示 Bytebase 进行手动或定期备份,并从中进行恢复。
库表同步。可以将一个数据库 schema 与另一个进行对比,Bytebase 能够自动识别差异并应用更改。
数据库版本控制应该集成到整体的开发工作流程中,你可以设置 CI/CD pipeline 来自动化应用数据库变更。比如在版本控制系统中配置 CI,使用 Bytebase 进行 SQL 语法审核。
以下分别是 GitHub Action 和 GitLab CI 的示例:
此外,你可以配置 Bytebase 项目以链接到你的 VCS 库以观察代码更改。这样,开发人员仍然在 VCS 中管理迁移脚本,当他们提交新的迁移脚本时,Bytebase 将捕捉该事件并自动生成新的工单来应用该迁移脚本。
毕竟,数据库版本控制也还是版本控制。开发人员希望以类似于管理代码变化的方式来管理数据库变更:就像 GitLab 和 GitHub一样,Bytebase 是为团队以类似 Git 的方式管理数据库变更而构建的。
💡 更多资讯,请关注 Bytebase 公号:Bytebase