什么是数据库自动化管理?
数据库自动化管理是指通过使用工具和流程,在尽量减少人为干预的情况下,管理和执行与数据库相关的任务。主要目的当然是提高效率,减少人为错误,确保一致性,并解放 DBA 和开发者,让他们能够专注于更加重要的任务。
我们借鉴了自动驾驶的 6 大等级,并定义了数据库自动化管理的 6 个等级。
第 0 级 - 无自动化
在这个级别,所有的数据库任务都是手动处理的,容易引发高风险的人为错误和数据不一致。
- 手动变更:数据库更改由 DBA 或开发者手动执行。
- 无版本控制:没有系统化地对数据库 schema 或变更进行版本控制。
- 高错误率:由于手动执行,容易出现错误和数据不一致。
- 高数据安全风险:数据访问权限是手动授予的,常常导致权限过期,违反最小权限原则(PoLP)。
- 无法追溯:难以跟踪数据库操作和维护数据库审计日志。
第 1 级 - 工单系统
在这个级别,数据库操作通过工单系统进行管理,引入了一定程度的流程和监督。许多组织就停留在这个级别。
- 工单系统:使用如 Jira, ServiceNow 等工单系统来请求、跟踪和批准数据库变更和访问权限。
- 审批流程:在发布变更和授予权限前需要经过批准,确保一定程度的审核。
- 手动执行:尽管使用了工单系统,变更仍然需要通过另一个独立的数据库客户端手动执行。
- 基本审计记录:在工单中捕获基本的审计记录。
第 2 级 - 版本控制
在这个级别,引入了版本控制来管理数据库变更,提高了可追溯性和团队协作性。采用了 DevOps 最佳实践的团队通常会达到这个级别。
- 版本控制:使用版本控制系统(VCS),例如 Git,来管理数据库 schema 和变更。
- 变更脚本:使用 SQL 变更脚本来管理数据库变更。
- 开发协作:通过共享版本历史,团队成员之间可以更好地协作。
- 手动执行:虽然变更仍然通过独立的数据库客户端手动部署,但具有更好的追踪和回滚能力。
第 3 级 - 流水线化
在这个级别,使用自动化工具来进行部署,减少了手动操作和错误。
- 自动化部署:使用 CI/CD 自动化部署数据库变更。
- 库变更工具:使用数据库变更工具(例如 Liquibase, Flyway)来管理和应用变更。
- 回滚能力:如果部署出现问题,可以自动回滚变更。
- 环境一致性:确保在开发、预生产和生产环境中进行一致地部署。
第 4 级 - 集成化
第 2 和第 3 级都增强了变更自动化,尤其是计划中的 schema 变更和作为应用发布周期一部分的数据变更。这些变更可以存储在版本控制系统(VCS)中并采用 DevOps 最佳实践。然而,还有一些临时变更,如修改生产数据和临时权限授予,这些一次性的数据库任务不适合存储在 VCS 中。
第 4 级涉及将所有数据库任务一起整合在整个数据库开发生命周期中。
- 完全集成的变更管理:数据库变更与应用代码一起,无缝集成到 CI/CD 中。
- 集中的权限控制:一次性的数据访问和导出权限授予遵循相同的数据库变更审批流程。而长期的权限则从外部认证系统(如 Okta, Active Directory 或 LDAP)同步。
- 安全和合规:所有人工数据库操作都在一个平台内处理,通过这样一种集中的方式,来加强安全性及合规性。
💡 Bytebase 可以实现这个级别。
第 5 级 - 完全自动化
在最高级别,整个数据库任务流程实现了完全自动化,几乎无需人为干预。
- 端到端任务自动化:从任务请求到部署和监控的全程自动化。
- 自我修复系统:在出现问题时自动回滚。
- 全面的合规性:自动化的合规审计和安全检查被集成到事前,事中,事后的整个生命周期中。
由于数据库在现代基础设施中扮演着至关重要的角色,我们还很难讲执行数据库任务是否能够完全摆脱人为干预。你说呢?👀
💡 更多资讯,请关注 Bytebase 公号:Bytebase