用 Bytebase 做数据库 schema 迁移
功能
入门 - 自动 SQL 审核(社区版、专业版和企业版)
进阶 - 发布策略(专业版和企业版)
高阶 - 自定义审批流(企业版)
准备工作
运行 Docker,并启动 Bytebase 的 Docker 容器:
docker run --init \ --name bytebase \ --restart always \ --publish 5678:8080 \ --health-cmd "curl --fail http://localhost:5678/healthz || exit 1" \ --health-interval 5m \ --health-timeout 60s \ --volume ~/.bytebase/data:/var/opt/bytebase \ bytebase/bytebase:2.11.1 \ --data /var/opt/bytebase \ --port 8080
通过 Docker 启动 Bytebase 后,使用 `localhost:5678` 访问主页,请先注册一个账户,此账户将自动被授予工作空间的管理员角色。
入门 - 自动 SQL 审核 + 自动发布(社区版)
1. 在环境的 Test 和 Prod 页面中,可以分别看到:
发布策略为「自动发布」。除非出现警告或错误,否则工单成功创建后将自动发布。
生产环境上启用了 SQL 审核,并使用示例策略。
2. 点击 Prod 环境下的「SQL Review Sample Policy」 可进入 SQL 审核模板,此模板中开启了列的「强制非空约束」策略,我们尝试违反看看。
3. 前往 Sample Project,我们为 Prod 环境的 employee 表添加空的 Email 列。
ALTER TABLE employee.employee
ADD Email varchar(255);
ALTER TABLE employee.employee
ADD Email varchar(255) NOT NULL;
6. 发布完成后可以在数据库 employee 的变更历史中看到变更记录和前后 schema 差异。
进阶:指定发布时间 + 手动发布(专业版)
1. 特定角色发布
可以指定多个预定义的角色来手动发布变更。在环境的 Prod 页面中,选择特定手工发布,勾选允许发布变更的角色,点击更新。
2. 指定发布时间
可以指定特定时间来发布变更。前往 Sample Project,我们为 Prod 环境的 employee 表添加 Country 列。
ALTER TABLE employee.employee
ADD Country varchar(255) NOT NULL;
可在工单页面指定发布时间。
高阶:自定义审批流 + 手动发布(企业版)
2. 前往设置⚙️ > 风险中心。添加一条「生产环境的 DDL 语句,默认为高风险」的规则。
3. 前往设置⚙️ > 成员,添加一个 DBA 角色,因为稍后需要 DBA 批准发布。
4. 进入环境 Prod ,现在你可以解锁第三个选项了!即由自定义审批流的最后一个审批人手动发布策略。选择该选项。
5. 前往 Sample Project,我们给 Test 和 Prod 数据库分别加一列 City。
ALTER TABLE employee.employee
ADD City varchar(255) NOT NULL;
6. 创建工单,审批流将自动匹配,此为第一步设置的 Project Owner -> DBA 审批,批准后将会自动发布。
总结
GitOps,观察 Git 代码推送事件并触发 schema 迁移
https://www.bytebase.com/docs/vcs-integration/overview/批量变更,在单个工作流中更改多个数据库
https://www.bytebase.com/docs/change-database/batch-change/分支,使用类似于 Git 的分支协作进行 schema 变更
https://www.bytebase.com/docs/branching/变更列表,按顺序编排和发布变更,或将其导出以离线执行
https://www.bytebase.com/docs/changelist/