随着 DevOps 进入主流,大部分团队采用 GitLab/GitHub 等工具来管理代码,并开始采用 Terraform 来管理基础设施,同样的,Bytebase 就是在应用程序开发期间管理数据库的这样的一个工具。

有意思,这个工具可以让你像 GitLab 一样管理数据库(gitlab是什么工具)  Bytebase 开源 第1张

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角色。

图片 有意思,这个工具可以让你像 GitLab 一样管理数据库(gitlab是什么工具)  Bytebase 开源 第2张

admin账号创建后,我们可以注册一个普通的账号会被授予Workspace Developer角色。

图片 有意思,这个工具可以让你像 GitLab 一样管理数据库(gitlab是什么工具)  Bytebase 开源 第3张

登录后进入到 Bytebase 的主页我们就可以根据需要创建项目、添加数据实例或者环境了,下面的一些图展示了 Bytebase 的一些示例。

图片 有意思,这个工具可以让你像 GitLab 一样管理数据库(gitlab是什么工具)  Bytebase 开源 第4张图 1 - Dashboard图片 有意思,这个工具可以让你像 GitLab 一样管理数据库(gitlab是什么工具)  Bytebase 开源 第5张图 2 - SQL review issue 流水线图片 有意思,这个工具可以让你像 GitLab 一样管理数据库(gitlab是什么工具)  Bytebase 开源 第6张

图 3 - 基于 GitLab 的 schema 迁移(Database as code)图片 有意思,这个工具可以让你像 GitLab 一样管理数据库(gitlab是什么工具)  Bytebase 开源 第7张图 4 - 内置的 SQL 编辑器

此外 Bytebase 还可以了一些在线 Demo 可以体验,地址:https://demo.bytebase.com,我们可以前往进行体验。关于 Bytebase 的更多使用可以参考官方文档 https://www.bytebase.com/docs 了解更多相关信息。

Git 仓库:https://github.com/bytebase/bytebase。

转载请说明出处
知优网 » 有意思,这个工具可以让你像 GitLab 一样管理数据库(gitlab是什么工具)

发表评论

您需要后才能发表评论