Bytebase 是一个开源数据库 DevOps 工具,它相当于在整个应用程序开发生命周期中管理数据库的 GitLab,它为 DBA 和开发人员提供了一个基于 Web 的工作空间,以安全有效地协作和管理数据库变更。
官网地址
随着 DevOps 进入主流,大部分团队采用 GitLab/GitHub 等工具来管理代码,并开始采用 Terraform 来管理基础设施,同样的 Bytebase 就是在应用程序开发期间管理数据库的这样的一个工具。Bytebase 是对现有云提供商的数据库平台或公司内部数据库运维平台的补充,虽然这些平台负责数据库实例级别的操作(例如配置数据库实例),但 Bytebase 会帮助团队使用配置的数据库来构建他们的应用程序。

主要特征

Bytebase 是一款聚焦在 Database schema change and version control 的工具。它主打的是在应用研发过程中变更数据库数据结构 (schema) 的这个场景,主要面向的人群是研发工程师和 DBA。
▶ 架构(DDL)和数据(DML)变更审核工作流程:与代码审查一样,Bytebase 简化了数据库变更过程,在单个工作流中,可以从开发环境一直到生产环境审查和部署数据库更改。
▶ SQL质量检查:Bytebase 分析 SQL 变更以执行符合您组织策略的规则。强制执行包括命名约定、反 SQL 模式检测等。生产环境和非生产环境也可以分别强制执行不同的规则。
▶ SQL编辑器: 基于 Web 的用于查询和导出数据的 SQL 编辑器,当开发人员需要访问数据时,DBA 不再需要提供敏感的数据库凭据。
▶ 与VCS集成的版本控制:Bytebase可以保留完整的Schema变更历史记录,它还与VCS系统(例如 GitLab)集成。团队可以在VCS中管理 SQL 迁移脚本,并在代码提交时触发 Schema 部署。
▶ 备份还原: Bytebase 支持数据库级别的手动和定期备份。
▶ 多租户支持:多租户服务可以为其每个租户创建单独的数据库,Bytebase 可以在单个工作流中为所有租户管理特定的数据库更改部署。

用例

▷ 多数据库管理
组织通常有多个数据库系统来管理OLTP和OLAP工作负载。Bytebase支持流行的数据库系统,包括MySQL、PostgreSQL、ClickHouse、TiDB和Snowflake。
▷ 数据库变更自动化
与GitLab/GitHub如何简化代码交付类似,Bytebase简化了从非生产环境到生产环境的数据库变更部署。Bytebase还与VCS集成,支持GitOps工作流。您可以在VCS中管理数据库更改脚本,只要观察到新的更改脚本,Bytebase就会启动新的部署过程。
您还可以将Bytebase的CLI bb集成到您现有的CI/CD工作流中。
▷ 数据库开发人员门户
随着工程团队的发展,将会形成一个平台团队或专门的DBA团队来管理数据库基础设施,并支持开发人员与他们的应用数据库进行交互。Bytebase为开发人员/数据库管理员/平台工程师提供了一个集中的门户,用于协作完成与数据库相关的任务,如检查数据库更改、查询数据、备份和恢复数据库等。
▷ 多租户服务
SaaS服务可以为其每个租户提供单独的数据库。确保数据库更改一致地应用于每个租户的数据库是一件痛苦且容易出错的事情。Bytebase提供了一种租户模式来对这些数据库进行分组,并可以将这些数据库的生命周期作为一个单元来管理。
▷ 模式实施和卓越工程
数据质量和系统健壮性在很大程度上取决于数据库模式。能够一致地实施标准是高质量模式的关键。Bytebase可以执行模式规则,包括命名约定、反SQL模式检测等。您还可以分别为生产和非生产环境配置每个单独的规则。

部署

Docker

Bytebase 提供了多种部署方式,最简单就是使用 Docker 进行一键启动。

docker run --init -d \--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://192.168.235.15 \--port 8080

您可以将8080更改为5678或其他端口,但是请确保这三个端口相同:

--publish {{hostport}} :{{containerport}} --port {{port}}}

Bytebase会将其数据存储在~/.bytebase/data,您可以通过运行命令重置所有数据:

rm -rf ~/.bytebase/data

浏览器访问 http://192.168.235.15:8080/
注册一个管理员帐户 部署后的第一个注册帐户将被授予工作区所有者(Workspace Owner)角色。
在Bytebase中,工作区所有者完成VCS配置。

注册一个定期账户 创建管理员帐户后,您可以注册一个普通帐户,并被授予Workspace Developer角色。

生产设置

确保 --host,--port 与字节库应该访问的host:port地址完全匹配。
Bytebase使用 --host, --port 来配置项目版本控制工作流使用的VCS webhook回调。如果主机:端口不匹配,则提交的迁移脚本将不会触发字节库中的问题创建。如果Bytebase由Docker运行,请确保 --publish hostport:containerport和 --port 标志相同。
如下例所示,所有3个端口都是5678: --publish 5678:5678 --port 5678

docker run --init --name bytebase --restart always --publish 5678:5678 --volume ~/.bytebase/data:/var/opt/bytebase bytebase/bytebase:<<version>> --data /var/opt/bytebase --host http://localhost --port 5678

无法用Docker启动Bytebase

docker logs bytebase
Due to the vm mechanism of colima, try to use the --mount option when starting colima as shown below:

mkdir ~/volumes
colima start --mount ~/volumes:w
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.1.0 --data /var/opt/bytebase --host http://localhost --port 8080

部署到Kubernetes

我们可以使用下面的最基础的资源清单来部署 Bytebase,最好使用一个 Volume 来持久化数据,这里我们定义的是一个 LoadBalancer 类型的 Service,当然我们也可以创建一个 Ingress 对象来进行暴露,具体使用哪种方式需要结合你 Kubernetes 集群来决定,可以在下面资源清单基础上进行修改。

apiVersion: apps/v1
kind: Deployment
metadata:name: bytebasenamespace: default
spec:selector:matchLabels:app: bytebasetemplate:metadata:labels:app: bytebasespec:containers:- name: bytebaseimage: bytebase/bytebase:1.2.2args: ["--data", "/var/opt/bytebase", "--host", "http://localhost", "--port", "8080"]ports:- containerPort: 8080volumeMounts:- name: datamountPath: /var/opt/bytebasevolumes:- name: dataemptyDir: {}
---
apiVersion: v1
kind: Service
metadata:name: bytebase-entrypointnamespace: default
spec:type: LoadBalancerselector:app: bytebaseports:- protocol: TCPport: 8080targetPort: 8080

直接在 Kubernetes 集群中部署上面的对象即可。

脚本

此外我们还可以使用 Bytebase 官方提供的安装脚本进行安装,安装脚本存储在https://github.com/bytebase/install
使用安装脚本安装最新发布版本:

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/bytebase/install/master/install.sh)"

如果没有出现错误,您应该会在控制台中看到如下内容

OS: Darwin
ARCH: arm64
Password:
Get bytebase latest version: x.y.z
Downloading tarball into /var/folders/j4/9x356cb9263f2jryv0xs9pnr0000gn/T/tmp.g1C2PJ8U
Start downloading https://github.com/bytebase/bytebase/releases/download/x.y.z/bytebase_x.y.z_Darwin_arm64.tar.gz...% Total    % Received % Xferd  Average Speed   Time    Time     Time  CurrentDload  Upload   Total   Spent    Left  Speed0     0    0     0    0     0      0      0 --:--:--  0:00:02 --:--:--     0
100 81.3M  100 81.3M    0     0  3972k      0  0:00:20  0:00:20 --:--:-- 5430k
Completed downloading https://github.com/bytebase/bytebase/releases/download/x.y.z/bytebase_x.y.z_Darwin_arm64.tar.gz
Start extracting tarball into /opt/bytebase...
Start installing bytebase and bb x.y.z
Installed bytebase x.y.z to /usr/local/bin
Installed bb x.y.z to /usr/local/binCheck the usage withbytebase --helpbb --help

安装完成后,运行:

bytebase --host http://localhost --port 8080

您应该在控制台中看到类似这样的内容:
Version x.y.z has started at http://localhost:8080
卸载 Bytebase

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/bytebase/install/master/uninstall.sh)"' 如果你想以非交互方式运行 bytebase 卸载程序,你可以使用:
NONINTERACTIVE=1 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/bytebase/install/master/uninstall.sh)"

I will always love the life I never deviated from.

Bytebase数据库 Schema 变更管理工具相关推荐

  1. 国产恒辉数据库CS端管理工具

    说起HHDBCS端管理工具,有些人就比较陌生,这是恒辉信达技术有限公司研发的一款恒辉数据库CS端管理工具.通用的数据库管理工具是管理数据库必不可少的工具,可以形象的称谓数据库管理员的"Off ...

  2. 基于WPF重复造轮子,写一款数据库文档管理工具(一)

    项目背景 公司业务历史悠久且复杂,数据库的表更是多而繁杂,每次基于老业务做功能开发都需要去翻以前的表和业务代码.需要理解旧的表的用途以及包含的字段的含义,表少还好说,但是表一多这就很浪费时间,而且留下 ...

  3. 开发SQLite数据库常用的管理工具

    虽然说一直在用Sql Server2000和2005开发项目,但是某些时候想开发一些小的应用程序,用这种数据库就不合适了,想想可以用ACCESS做数据库, 但是一直觉得ACCESS是过去的东西,和C# ...

  4. mongodb可视化管理工具_对我来说数据库图形化管理工具用这个足够了

    1. 前言 我是一个有软件洁癖的人,能用现有的软件解决问题的绝不安装新的软件.Java后端开发主要跟数据库打交道,所以数据库图形化界面(GUI)是少不了的.通常图形化操作关系型数据库(RMDBS)大多 ...

  5. mysql 图形插件_对我来说数据库图形化管理工具用这个足够了

    1. 前言 胖哥是一个有软件洁癖的人,能用现有的软件解决问题的绝不安装新的软件.Java后端开发主要跟数据库打交道,所以数据库图形化界面(GUI)是少不了的.通常图形化操作关系型数据库(RMDBS)大 ...

  6. 【Database-02】达梦数据库 - DM Manager管理工具安装

    1.简介 DM Manager是达梦数据库自带的图形化界面管理工具,在安装达梦数据库的时候就会自动安装. Linux环境,默认安装路径为:达梦安装目录/tool/manager,如果Linux是安装G ...

  7. win达梦数据库下载安装-管理工具连接建库建表查询操作

    今天被分配安装国产数据库达梦,好吧,那就开始做吧,无奈网上的教程少之又少,自己摸索着搭建以后用的,那就开始把 1.下载达梦数据库 达梦官网地址,windons找windons,linux找linux, ...

  8. 数据库动态变化管理工具(Liquibase)学习

    Liquibase 学习 1)概述: 2)基本使用 1)概述: iquibase 是一个用于跟踪,管理和应用数据库变化的开源的数据库重构工具.它将所有数据库的变化(包括结构和数据) 都保存在XML文件 ...

  9. MS SQL Server数据库在线远程管理工具

    MS SQL Server数据库在线管理工具 MS SQL Server数据库以其优异的性能,被广泛使用,特别是政务,医疗行业.但是远程维护挺不方便的,目前有一款基于WEB的工具TreeSoft数据库 ...

最新文章

  1. 设计模式(6)-装饰器(认识程序中的装饰器)
  2. [ 云炬创业基础笔记]商业模式创新
  3. 配置CDI对话的超时
  4. mysql if语句后面执行两个语句_MySQL的if,case语句使用总结
  5. js一次获取整个表单的数据
  6. 假期把技术书籍和焦虑放一边,我做了几天...
  7. 95-134-110-源码-维表-Flink 1.9.0 维表实现
  8. 无法执行任何java命令,报错OutOfMemoryError: Cannot create GC thread. Out of system resources
  9. Redo Log的逻辑与物理结构
  10. 【论文推荐】推荐4个NLP任务的论文列表 -- 语法纠错、释义生成、文本可读性、汉字部件...
  11. rcmd–App Switcher for Mac快速切换应用程序
  12. cnblog中添加数学公式支持
  13. 九大内置对象及其常用方法
  14. Java爬坑--集合(二)List
  15. html 加爱心符号,心形符号大全
  16. Thanks, Steve Jobs!
  17. python商品评论数据采集与分析可视化系统 Flask框架 requests爬虫 NLP情感分析 毕业设计 源码
  18. BCD码以及各进制之间的相互转换
  19. 网页(手机wap)如何让广告点击后不再显示?您该这样写代码
  20. 自己写的加班申请、审批微信小程序(有源码)

热门文章

  1. Mysql的distinct、order by和group by冲突报错
  2. selenium无法打开浏览器问题
  3. android 动态改变进度条,Android条纹进度条的实现(调整view宽度仿进度条)
  4. iOS开发宝典:String用法大全
  5. mysql计算字段文本区分度
  6. java项目——发邮件之阿里云邮箱推送服务(一)
  7. PPTV(pplive)_forap_1084_9993.exe 木马清除经历
  8. [课堂大数据] 苏格拉底教学分析系统
  9. Linux开机自动化执行脚本的四种方法(真实案例分享)
  10. 获取磁盘信息并扫描是否连接移动磁盘之JS版