有意思,这个工具可以让你像 GitLab 一样管理数据库

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

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。

责任编辑:姜华 来源: Github爱好者
相关推荐

2021-05-20 08:37:32

multiprocesPython线程

2015-09-17 17:49:13

华三/UIS

2021-07-14 10:00:28

数据库SQL查询Linux

2013-11-29 13:05:07

程序员工作

2022-05-20 07:36:02

LiveTerm工具

2020-03-10 14:59:16

oracle数据库监听异常

2011-10-24 13:07:00

2017-05-22 10:33:14

PythonJuliaCython

2018-06-24 16:39:28

Tomcat异常线程

2021-01-27 13:54:05

开发云原生工具

2020-12-12 13:50:16

云开发

2021-06-10 08:15:49

CSS 文字动画技巧

2021-03-25 06:12:55

SVG 滤镜CSS

2019-11-20 09:10:12

开源技术 数据

2021-10-28 19:35:02

代码main方法

2022-07-11 13:09:26

mmapLinux

2009-12-08 14:26:13

大型网络运维

2009-12-08 18:06:12

戴尔存储动车组

2017-11-07 10:09:39

Windows效率利器Everything

2013-08-22 10:17:51

Google大数据业务价值
点赞
收藏

51CTO技术栈公众号