世界观热点:有意思,这个工具可以让你像 GitLab 一样管理数据库
2022-08-03 09:55:45来源:Github爱好者
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/v1kind: Deploymentmetadata: name: bytebase namespace: defaultspec: 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: v1kind: Servicemetadata: name: bytebase-entrypoint namespace: defaultspec: 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。