使用Clickhouse的数据库更改管理
#初学者 #database #clickhouse

这是有关Clickhouse的一系列有关数据库更改管理的文章。


ClickHouse是一个快速的开源列列数据库管理系统,允许使用SQL查询实时生成分析数据报告。

本教程将指导您逐步为字节键在Clickhouse(云和自我管理)设置数据库更改管理。使用ByteBase,团队可以进行正式的审核和推出过程,以使ClickHouse模式更改和数据更改。

您将拥有GUI和完整的变更历史。您可以使用bytebase免费版本来完成教程。

如果需要的话,还有一个关于漂移检测的奖金部分。

包括功能

  • 更改工作流
  • 更改历史
  • 漂移检测

先决条件

在启动本教程之前,请确保:

步骤1-在Docker中启动字节键

  1. 确保您的Docker守护程序正在运行,并启动字节键Docker容器。
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.13.0 \
  --data /var/opt/bytebase \
  --port 8080
  1. 字节键在Docker成功运行,您可以通过localhost:5678访问它。
    docker

  2. 在浏览器中访问Localhost:5678。注册第一个将获得koude1的管理员帐户。
    register

步骤2-在字节键中添加clickhouse

在字节键中,一个实例可能是您的本地MySQL实例,AWS RDS实例等,在本教程中,ClickHouse Cloud帐户或自我管理的实例。

  1. 访问localhost:5678并登录为Workspace Owner
    login

  2. 单击添加实例
    bb-add-instance

  3. 添加 clickhouse实例,然后单击创建

注意某些领域:

环境:选择Test,如果您选择Prod,默认情况下,问题将等待批准。在本教程中,我们试图保持简单。但是,这都是可配置的。

如果使用云版本。转到您的ClickHouse Cloud帐户,然后单击查看连接字符串

主机或插座端口在灰色框中作为参数。

用户名密码在注册ClickHouse Cloud帐户时生成并存储在clickhouse_credentials.txt中。
ch-cloud-view-connection-string
ch-cloud-view-host
ch-cloud-view-password

请确保允许从Anywhere访问此服务。
ch-cloud-anywhere

选择用于SSL连接的CA Certificate,如果使用MacOS,请打开文件/etc/ssl/cert.pem,将内容整体复制,然后将其粘贴到 CA证书字段框中。单击测试连接以验证其工作。

bb-instance-ch-cloud

  1. 如果您使用自我管理版本的Clickhouse,请填写以下图像的实例表单,然后单击 Create bb-instance-ch-self-managed

步骤3-使用Clickhouse实例创建一个项目

bytebase, project 是逻辑上相关数据库的容器问题与其他开发工具(例如Jira,Gitlab)中的项目概念相似。因此,在处理数据库之前,必须创建一个项目。

  1. 创建实例后,单击顶部栏上的项目

  2. 单击新项目创建一个新的项目TestClickHouse,key是TCH,模式为standard。单击创建
    bb-projects-new

步骤4-通过字节键在Clickhouse中创建数据库

在字节键中,a 数据库是“创建数据库XXX”创建的数据库。数据库始终属于一个项目问题代表开发人员和DBA之间的特定协作活动,例如创建数据库,更改模式。它类似于其他问题管理工具中的问题概念。

  1. 创建项目后。单击新的DB 在项目顶部栏上。
    bb-project-new-db

  2. 名称 -db_demo环境 -Test实例 -ClickHouse instance填充表格。单击创建
    bb-create-db

  3. 它将创建一个问题 - 自动创建数据库。因为这是针对Test环境的,所以问题将在不等待您默认情况下批准的情况下运行。单击解决,问题是Done。创建数据库。
    bb-issue-dbdemo-done

  4. 通过单击左侧栏上的主页返回主页。在主页上,您可以看到项目,数据库以及您刚解决的问题。
    bb-home-dbdemo-done

步骤5-通过字节键在Clickhouse中创建一个表格

在步骤4中,您创建了一个问题,可以通过UI工作流创建数据库,然后执行它。让我们尝试创建另一个问题以更改该数据库。

  1. 转到项目TestClickHouse,然后单击 alter schema
    bb-project-alter-schema

  2. 选择db_demo,然后单击下一个。如果您对不同环境有不同的数据库,它可能会生成管道。
    bb-alter-schema-select-db

  3. 输入SQL如下,然后单击创建

CREATE TABLE
 t1 (id UInt64, name String) ENGINE = MergeTree
ORDER BY id;
  1. 字节键将进行一些基本检查,然后执行SQL。由于它适用于Test环境,因此默认情况下会自动批准该问题。单击解决问题,问题状态将变为Done
    bb-issue-create-table-done

  2. 在问题页面上,单击查看更改。您会看到更改的差异。
    bb-dbdemo-change-diff

  3. 您也可以转到在项目下更改历史以查看完整的历史记录。或进入特定数据库以查看其历史记录。
    bb-project-change-history
    bb-db-change-history

奖金部分 - 漂移检测

本节要求您拥有企业计划(您可以在没有信用卡的情况下直接在产品中开始14天试用)。

现在,您可以看到db_demo的完整更改历史记录。但是,什么是建立新的基线?什么时候应该使用?

通过采用字节基础,我们希望团队仅将字节基础用于所有模式更改。同时,如果有人使Clickhouse模式更改了字节键的一边,那么显然ByteBase会不会知道。而且,由于字节键记录了自己的模式副本,所以当比格斯比较现场模式具有带外模式的变化时,它将注意到差异并表现出模式漂移异常。如果要进行更改,则您应该再次基线架构状态进行调和。

在本节中,您将通过此过程进行指导。

  1. 转到ClickHouse Cloud,单击打开SQL控制台,然后在此处添加列age。确保添加新列。
ALTER TABLE t1 ADD COLUMN age UInt8;

ch-cloud-dbdemo-add-age

  1. 等待大约10分钟的字节键检测漂移。返回字节键,您可以在:
  2. 上找到架构漂移

数据库db_demo
bb-drift-dbdemo

异常中心
bb-drift-ac

  1. 单击查看diff ,您将看到确切的漂移。
    bb-view-drift-diff

  2. 转到db_demo> 更改历史,然后单击建立新的基线调和模式。
    bb-dbdemo-create-new-baseline

  3. 它将创建基线问题。单击解决标记完成。
    bb-issue-dbdemo-baseline-done

  4. 回到db_demo或异常中心,您会发现漂移消失了。
    bb-dbdemo-no-drift
    bb-ac-no-drift

摘要和下一个

现在,您已将Clickhouse与bytebase连接,并尝试了UI工作流程进行架构更改。 Byttebase将为您记录完整的更改历史记录。使用企业计划,您甚至可以进行漂移检测。

在下一篇文章中,您将尝试使用Gitops Workflow,该工作流将您的Clickhouse模式存储在GitHub中,并在将更改提交给存储库后触发更改,以使您的ClickHouse更改工作流程将工作流程更上一一,又称<<强>数据库DevOps -Database as Code