Bytebase 搭建及如何对接 ClickHouse

Bytebase 是一个数据库 CI/CD 工具,提供 SQL 审核、变更、留档、回滚等功能,本文对 Bytebase 的使用做个简要说明。

1. 安装

可以通过官方提供的 docker 镜像快速体验 Bytebase。命令如下:

docker run --init \
  --name bytebase \
  --platform linux/amd64 \
  --restart always \
  --publish 5678:8080 \
  --health-cmd "curl --fail http://localhost:5678/healthz || exit 1" \
  --health-interval 5m \
  --health-timeout 60s \
  --volume ~/.bytebase/data:/var/opt/bytebase \
  bytebase/bytebase:1.12.0 \
  --data /var/opt/bytebase \
  --port 8080

接下来会看到一下输出,说明启动成功:

2023-02-14T14:05:04.417Z	INFO	server/server.go:206	-----Config BEGIN-----
2023-02-14T14:05:04.420Z	INFO	server/server.go:207	mode=prod
2023-02-14T14:05:04.420Z	INFO	server/server.go:208	dataDir=/var/opt/bytebase
2023-02-14T14:05:04.420Z	INFO	server/server.go:209	resourceDir=/var/opt/bytebase/resources
2023-02-14T14:05:04.420Z	INFO	server/server.go:210	externalURL=https://www.bytebase.com/docs/get-started/install/external-url
2023-02-14T14:05:04.420Z	INFO	server/server.go:211	readonly=false
2023-02-14T14:05:04.420Z	INFO	server/server.go:212	debug=false
2023-02-14T14:05:04.421Z	INFO	server/server.go:213	demoName=
2023-02-14T14:05:04.421Z	INFO	server/server.go:214	backupStorageBackend=LOCAL
2023-02-14T14:05:04.421Z	INFO	server/server.go:215	backupBucket=
2023-02-14T14:05:04.421Z	INFO	server/server.go:216	backupRegion=
2023-02-14T14:05:04.421Z	INFO	server/server.go:217	backupCredentialFile=
2023-02-14T14:05:04.421Z	INFO	server/server.go:218	-----Config END-------
2023-02-14T14:05:04.558Z	INFO	server/server.go:248	-----Sample Postgres Instance BEGIN-----
2023-02-14T14:05:04.559Z	INFO	server/server.go:250	sampleDatabasePort=8083
2023-02-14T14:05:04.559Z	INFO	server/server.go:251	sampleDataDir=/var/opt/bytebase/pgdata-sample
2023-02-14T14:05:05.501Z	INFO	server/server.go:255	-----Sample Postgres Instance END-----
2023-02-14T14:05:05.502Z	INFO	server/server.go:260	-----Embedded Postgres Config BEGIN-----
2023-02-14T14:05:05.502Z	INFO	server/server.go:261	datastorePort=8082
2023-02-14T14:05:05.502Z	INFO	server/server.go:262	pgDataDir=/var/opt/bytebase/pgdata
2023-02-14T14:05:05.502Z	INFO	server/server.go:263	-----Embedded Postgres Config END-----
a2023-02-14T14:05:06.808Z	INFO	store/pg_engine.go:302	Apply database migration if needed...
2023-02-14T14:05:06.809Z	INFO	store/pg_engine.go:306	Current schema version before migration: 1.12.6
2023-02-14T14:05:06.811Z	INFO	store/pg_engine.go:318	The prod cutoff schema version: 1.12.6
2023-02-14T14:05:06.811Z	INFO	store/pg_engine.go:392	Skip migration 1.0.0; the current schema version 1.12.0 is higher.
2023-02-14T14:05:06.812Z	INFO	store/pg_engine.go:392	Skip migration 1.1.0; the current schema version 1.12.0 is higher.
2023-02-14T14:05:06.812Z	INFO	store/pg_engine.go:392	Skip migration 1.2.0; the current schema version 1.12.0 is higher.
2023-02-14T14:05:06.812Z	INFO	store/pg_engine.go:392	Skip migration 1.3.0; the current schema version 1.12.0 is higher.
2023-02-14T14:05:06.812Z	INFO	store/pg_engine.go:392	Skip migration 1.4.0; the current schema version 1.12.0 is higher.
2023-02-14T14:05:06.812Z	INFO	store/pg_engine.go:392	Skip migration 1.5.0; the current schema version 1.12.0 is higher.
2023-02-14T14:05:06.812Z	INFO	store/pg_engine.go:392	Skip migration 1.6.0; the current schema version 1.12.0 is higher.
2023-02-14T14:05:06.812Z	INFO	store/pg_engine.go:392	Skip migration 1.7.0; the current schema version 1.12.0 is higher.
2023-02-14T14:05:06.812Z	INFO	store/pg_engine.go:392	Skip migration 1.8.0; the current schema version 1.12.0 is higher.
2023-02-14T14:05:06.812Z	INFO	store/pg_engine.go:392	Skip migration 1.9.0; the current schema version 1.12.0 is higher.
2023-02-14T14:05:06.812Z	INFO	store/pg_engine.go:392	Skip migration 1.10.0; the current schema version 1.12.0 is higher.
2023-02-14T14:05:06.812Z	INFO	store/pg_engine.go:392	Skip migration 1.11.0; the current schema version 1.12.0 is higher.
2023-02-14T14:05:06.813Z	INFO	store/pg_engine.go:396	Starting minor version migration cycle from 1.12.0 ...
2023-02-14T14:05:06.813Z	INFO	store/pg_engine.go:444	Database schema is at version 1.12.6; nothing to migrate.
2023-02-14T14:05:06.896Z	INFO	store/pg_engine.go:157	Current schema version after migration: 1.12.6

██████╗ ██╗   ██╗████████╗███████╗██████╗  █████╗ ███████╗███████╗
██╔══██╗╚██╗ ██╔╝╚══██╔══╝██╔════╝██╔══██╗██╔══██╗██╔════╝██╔════╝
██████╔╝ ╚████╔╝    ██║   █████╗  ██████╔╝███████║███████╗█████╗
██╔══██╗  ╚██╔╝     ██║   ██╔══╝  ██╔══██╗██╔══██║╚════██║██╔══╝
██████╔╝   ██║      ██║   ███████╗██████╔╝██║  ██║███████║███████╗
╚═════╝    ╚═╝      ╚═╝   ╚══════╝╚═════╝ ╚═╝  ╚═╝╚══════╝╚══════╝

Version 1.12.0 (schema version 1.12.6) has started on port 8080

************* External Visiting URL (--external-url) *************

!!! You have not set --external-url. If you want to make Bytebase
!!! externally accessible, follow:

https://www.bytebase.com/docs/get-started/install/external-url

******************************************************************
___________________________________________________________________________________________

2. 注册管理员

docker 启动成功后,本地浏览器打开 http://localhost:5678 即可打开 Bytebase 主页面,首次打开是管理员注册页面:
在这里插入图片描述

在相应位置填入邮箱和登录密码,点击注册即可。注册成功后会自动跳转到登录后的控制台页面:
在这里插入图片描述

3. 添加实例

点击添加实例按钮:

在这里插入图片描述

会弹出创建实例对话框:

在这里插入图片描述

在创建实例对话框中填入 ClickHouse 的域名/IP 和端口,点击测试连接,会在右下角弹出成功提示。此时点击创建即完成实例的创建。这里的 ClickHouse 是我本机启动的,如果为了方便,官方也提供了相应的 docker-compose.yml 来一键启动 Bytebase 和 ClickHouse,附带单机版 ClickHouse 的 clickhouse-quickstart.docker-compose.yml 和 附带集群版 ClickHouse 的 clickhouse-cluster-quickstart.docker-compose.yml

如果 ClickHouse 也是本机部署,那需要用 host.docker.internal 作为本机域名,如果使用 localhost 作为本机域名 Bytebase 会给出温馨提示:连接到实例失败。 如果您使用的 Docker 部署,请尝试使用 "host.docker.internal" 作为 Host 地址

4. 创建项目

实例创建完成后,需要创建项目,点击菜单栏中的项目->创建项目,会弹出如下对话框:

在这里插入图片描述

需要为项目起个名字 “ClickHouse Project”,点击创建即可。

5. 创建数据库

有了项目后,在项目中创建数据库,点击创建数据库:

在这里插入图片描述

在创建数据库对话框中添加数据名称 mydb,再填写集群,这里的集群是 ClickHouse 特有的,也就是 ClickHouse 中 cluster 的概念,需要根据 ClickHouse 的实际配置来填写,再选择环境,因为上面在创建实例时选择的是 Test,这里也要选择 Test,这时下面的实例下拉框中就会出现刚才创建的 ClickHouse 实例。最后点击创建即可。

注意:如果使用的是单机版 ClickHouse 集群是不用填写的,留空即可,如果按照上述的填写方式,会有报错如下:

在这里插入图片描述

会提示所执行的 on cluster default 不存在。

所以集群输入框留空即可,成功创建后如下:

在这里插入图片描述

可以在左侧看到 ClickHouse Project 项目和 Test 环境下成功创建的名为 db 数据库。

6. 创建表

给新建的数据库创建表,点击数据库菜单下的变更 Schema:
在这里插入图片描述

点击变更 Schema 后会弹出数据库选择对话框如下:
在这里插入图片描述

选择上面刚创建的数据 db,会出现建表页面:
在这里插入图片描述

在 SQL 输入框中输入建表语句:

create table tb
(
  id UInt32,
  name String
) engine MergeTree()
order by id

在输入语句时,Bytebase 会弹出提示框来帮助用户补全 SQL,但是 ClickHouse 的 SQL 语法并不是标准 SQL,所以有的数据类型、表引擎类型还是不能正确提示。

最后点击创建,成功页面如下:
在这里插入图片描述

在 Bytebase 中表的创建和变更都归类为变更操作,可以看到执行完 SQL 右上角会有个解决按钮,点击解决会有个提示框,可用于输入一些备注。至此一个表创建或变更操作才算完成。

7. 查看变更历史

可以通过查看变更历史来查看对实例的所有操作,点击数据库菜单,选择所要查看的数据库即可:
在这里插入图片描述

8. 执行 SQL

Bytebase 还提供了友好的 SQL 执行页面:

在这里插入图片描述

可以在页面上执行 SQL 语句,如果像上图要执行 insert 语句需要有管理员权限,上图是拥有管理员权限的视图,普通用户权限只能执行 select,普通用户的视图如下:

在这里插入图片描述

至此,Bytebase 的基本功能就介绍完毕了,其实 Bytebase 还有很多功能和细节设计有待进一步发掘。

猜你喜欢

转载自blog.csdn.net/weixin_39992480/article/details/129035441