初体验| 使用Bytebase进行数据库CI/CD变更
笔者一直在关注数据库领域的DevOps最佳实践,今天笔者尝试Bytebase产品来对数据库进行变更。时间有限暂时体验了下web页面进行变更,整个过程还是很流畅的。特此整理体验的整个过程,推荐和我一样关注数据库DevOps实践的伙伴也亲自体验下。
以下是笔者的体验过程:
1. 快速部署
使用docker-compose快速部署。可以参考官方文件URL:https://raw.githubusercontent.com/bytebase/bytebase/main/quickstart/getting-started.docker-compose.yml 。我在本地的compose文件如下所示:
version: "3.7"
services:
bytebase:
image: bytebase/bytebase:1.12.0
init: true
container_name: bytebase
restart: always
ports:
- 5678:5678
# # Uncomment the following lines to persist data
# volumes:
# - ~/.bytebase/data:/var/opt/bytebase
command: ["--data", "/var/opt/bytebase", "--port", "5678"]
employee-prod:
image: bytebase/sample-database:mysql-employee-small
ports:
- 3306:3306
employee-test:
image: bytebase/sample-database:mysql-employee-small
ports:
- 3307:3306
以上代码会部署bytebase
和两个用于测试的数据库employee-prod
和employee-test
。通过命令docker-compose up -d
运行。
访问 http://localhost:5678/
第一次访问需要注册管理员账号。如图所示:填写邮箱、密码、用户名信息并接受Bytebase的服务条款和隐私策略。
2. 创建环境
导航到“环境”菜单, 默认存在Test
和Prod
(如果存在多个环境例如STG、UAT等等可以选择创建环境) prod环境需要人工审批后才可以执行。
3. 添加实例
导航到“实例”菜单, 添加实例。将启动的两个数据库实例加入平台中。
首先添加test实例,选择环境Test
输入数据库的账号和密码,然后点击测试连接进行测试。如果提示测试成功则点击“创建”按钮完成实例添加。
然后可以看到当前数据库的同步状态:
重复以上步骤添加PROD数据库实例,注意环境选择PROD。最终实例如下:
4. 数据库变更
将数据库关联项目
在employee
表中添加一列nickname
在 Bytebase 中,Project
是包含和管理数据库的单元。因此,在处理示例数据库之前,您需要先将它们关联到项目中。参考下图创建项目。
转移数据库
将测试和生产环境的DB实例中的库转移到项目中。
变更Schema
填写变更SQL,然后预览工单。选择普通变更。
「工单」代表了开发人员和 DBA 之间的合作活动,如创建数据库,改变 schema。它类似于其他管理工具中的工单概念。
应用到其他Stage
会将SQL语句自动同步到Prod Stage的SQL,然后点击右上角“创建”完成工单创建。然后会自动进行任务检查包括 语法、语句类型、连接、变更schema、SQL审查。
Prod数据设置的变更需要审批, 点击右上角“批准”即可运行生产环境的数据变更。
变更完成
5. 验证变更
进入数据库,选择SQL 编辑器.
查询表字段,发现nikename
字段已经添加成功。
test环境DB截图:
prod环境DB截图:
6. 解决工单
通过上面的变更和验证,变更成功。将工单状态更新为“解决”
进入工单首页:
将工单状态标记为解决。