Bytebase 是一个开源数据库 DevOps 工具,它相当于在整个应用程序开发生命周期中管理数据库的 GitLab,它为 DBA 和开发人员提供了一个基于 Web 的工作空间,以安全有效地协作和管理数据库变更。
随着 DevOps 进入主流,大部分团队采用 GitLab/GitHub 等工具来管理代码,并开始采用 Terraform 来管理基础设施,同样的,Bytebase 就是在应用程序开发期间管理数据库的这样的一个工具。Bytebase 是对现有云提供商的数据库平台或公司内部数据库运维平台的补充,虽然这些平台负责数据库实例级别的操作(例如配置数据库实例),但 Bytebase 会帮助团队使用配置的数据库来构建他们的应用程序。
特性
- 架构 (DDL) 和数据 (DML) 变更审核工作流程:与代码审查一样,Bytebase 简化了数据库变更过程,在单个工作流中,可以从开发环境一直到生产环境审查和部署数据库更改。
- SQL 质量检查:Bytebase 分析 SQL 变更以执行符合您组织策略的规则。强制执行包括命名约定、反 SQL 模式检测等。生产环境和非生产环境也可以分别强制执行不同的规则。
- SQL 编辑器:基于 Web 的用于查询和导出数据的 SQL 编辑器,当开发人员需要访问数据时,DBA 不再需要提供敏感的数据库凭据。
- 与 VCS 集成的版本控制:Bytebase 可以保留完整的 Schema 变更历史记录,它还与 VCS 系统(例如 GitLab)集成。团队可以在 VCS 中管理 SQL 迁移脚本,并在代码提交时触发 Schema 部署。
- 备份还原:Bytebase 支持数据库级别的手动和定期备份。
- 多租户支持:多租户服务可以为其每个租户创建单独的数据库,Bytebase 可以在单个工作流中为所有租户管理特定的数据库更改部署。
部署
Bytebase 提供了多种部署方式,最简单就是使用 Docker 进行一键启动。
docker run --init \
--name bytebase \
--restart always \
--add-host host.docker.internal:host-gateway \
--publish 8080:8080 \
--volume ~/.bytebase/data:/var/opt/bytebase \
bytebase/bytebase:1.2.2 \
--data /var/opt/bytebase \
--host http://localhost \
--port 8080
上面的命令启动后我们可以通过 http://localhost:8080 直接访问 Bytebase,就是这么简单。
如果你想要在生产环境中使用,我们建议将其部署到 Kubernetes 集群中去。
我们可以使用下面的最基础的资源清单来部署 Bytebase,最好使用一个 Volume 来持久化数据,这里我们定义的是一个 LoadBalancer 类型的 Service,当然我们也可以创建一个 Ingress 对象来进行暴露,具体使用哪种方式需要结合你 Kubernetes 集群来决定,可以在下面资源清单基础上进行修改。
apiVersion: apps/v1
kind: Deployment
metadata:
name: bytebase
namespace: default
spec:
selector:
matchLabels:
app: bytebase
template:
metadata:
labels:
app: bytebase
spec:
containers:
- name: bytebase
image: bytebase/bytebase:1.2.2
args: ["--data", "/var/opt/bytebase", "--host", "http://localhost", "--port", "8080"]
ports:
- containerPort: 8080
volumeMounts:
- name: data
mountPath: /var/opt/bytebase
volumes:
- name: data
emptyDir: {}
---
apiVersion: v1
kind: Service
metadata:
name: bytebase-entrypoint
namespace: default
spec:
type: LoadBalancer
selector:
app: bytebase
ports:
- protocol: TCP
port: 8080
targetPort: 8080
直接在 Kubernetes 集群中部署上面的对象即可。
此外我们还可以使用 Bytebase 官方提供的安装脚本进行安装,脚本托管在 https://github.com/bytebase/install 仓库。
使用
Bytebase 部署成功后,我们需要为团队成员注册账号,第一次注册的账号会被授予 Workspace Owner 角色。
admin 账号创建后,我们可以注册一个普通的账号会被授予 Workspace Developer 角色。
登录后进入到 Bytebase 的主页我们就可以根据需要创建项目、添加数据实例或者环境了,下面的一些图展示了 Bytebase 的一些示例。
图 1 - Dashboard图 2 - SQL review issue 流水线
图 3 - 基于 GitLab 的 schema 迁移(Database as code)图 4 - 内置的 SQL 编辑器
此外 Bytebase 还可以了一些在线 Demo 可以体验,地址:https://demo.bytebase.com,我们可以前往进行体验。关于 Bytebase 的更多使用可以参考官方文档 https://www.bytebase.com/docs 了解更多相关信息。
Git 仓库:https://github.com/bytebase/bytebase。