数据库更改管理与雪花
#database #snowflake

这是一系列有关使用雪花的数据库更改管理的文章


本教程将指导您逐步设置ByteBase中Snowflake的数据库更改管理。使用ByteBase,团队可以进行正式的审核和推出过程,以进行雪花模式更改和数据更改。

在这里,我们必须提及内容丰富的博客文章Embracing Agile Software Delivery and DevOps with Snowflake,该文章提供了宝贵的见解,并激发了我们在产品中实施类似流程的启发。

您将拥有GUI和完整的移民历史。您可以使用字节键免费计划来完成本教程。如果需要,还有一个关于这些高级用户的架构漂移检测的奖励部分。

先决条件

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

  • 您有一个雪花帐户,带有ACCOUNTADMIN的角色。
  • 您在本地安装了Docker

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

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

  2. 在浏览器中访问localhost:5678。注册将授予Workspace Owner的第一个管理员帐户。
    bb-register

步骤2-在字节基础上添加雪花帐户

在字节键中,实例可能是您的本地MySQL实例,AWS RDS实例等,在本教程中,雪花帐户。

  1. 访问localhost:5678并登录为工作区所有者。
    bb-login

  2. 如果您第一次运行字节键,请按照入门指南,否则单击添加实例
    bb-add-instance

  3. 添加雪花实例。您需要注意一些领域:
    bb-create-instance

环境:选择Test,如果您选择Prod,则需要批准所有将来的变更请求。在本教程中,让我们尝试保持简单。 (但是,这是所有可配置的。)

帐户名称:转到您的雪花帐户,您可以在URL或定位器字段中找到它(但较低的情况)。
sf-locator

用户名和密码:您用来登录雪花帐户的用户名和密码。
sf-login

关于连接信息,请确保您的帐户在雪花中设置了DEFAULT_ROLE=ACCOUNTADMINDEFAULT_WAREHOUSE,如下所示。
sf-role-list
sf-edit-user

步骤3-用雪花实例创建一个项目

bytebase,项目是逻辑相关数据库的容器其他开发工具,例如Jira,Gitlab。因此,在处理数据库之前,必须创建一个项目。

  1. 创建实例后,如果您第一次使用字节键,请遵循“入门指南”。如果没有 bb-sf-created

  2. 单击新项目创建一个新项目TestSnowflake,key是TS,mode是standard。单击创建
    bb-new-project

步骤4-通过BIDTEBASE在雪花中创建数据库

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

  1. 创建项目后。如果您第一次使用字节键,请遵循“入门指南”。如果没有 bb-new-db

  2. 用名称-DB_DEMO_BB(BB是字节基础的简短),环境-Test和实例-Snowflake instance。单击创建
    bb-create-db

  3. 字节键将创建一个问题 - 自动创建数据库。因为这是针对Test环境的,因此问题将在不等待您默认情况下的批准而运行。单击解决,问题就完成了。创建数据库。
    bb-go-home

  4. 通过单击主页在左侧栏上返回主页。如果您第一次使用字节基础,它将显示庆祝活动。在主页上,您可以看到项目,数据库以及您刚解决的问题。
    bb-created-database

步骤5-通过字节键在雪花上创建桌子

在步骤4中,您实际上在UI工作流中创建了一个问题,然后执行它。让我们更加明确。

  1. 转到项目TestSnowflake,然后单击 alter schema
    bb-prj-alter-schema

  2. 选择DB_DEMO_BB,然后单击下一个。如果您对不同环境有不同的数据库,则可以生成管道。
    bb-alter-schema-test

  3. 输入标题,SQL和受让人,然后单击创建

CREATE SCHEMA DEMO_UI;
CREATE TABLE HELLO_WORLD
(
  FIRST_NAME VARCHAR,
  LAST_NAME VARCHAR
);

bb-is-new-create-table

  1. 字节键将进行一些基本检查,然后执行SQL。由于它适用于Test环境,因此默认情况下会自动批准该问题。单击解决问题
    bb-is-create-table-run

  2. 问题状态将完成。
    bb-is-create-table-done

  3. 在问题页面上,单击查看迁移。您将看到每个迁移的差异。
    bb-view-migration

  4. 您也可以在项目下转到迁移历史以查看完整的历史记录。或进入特定数据库以查看其历史记录。
    bb-prj-mh
    bb-db-mh

奖励部分 - 模式漂移检测

要遵循本节,您需要拥有团队计划企业计划(您可以在没有信用卡的产品中直接在产品中开始14天的试用)。

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

通过采用字节键,我们希望团队仅将字节基础用于所有模式更改。同时,如果有人在Bytebase之外进行了雪花架构的变化,那么显然Bytebase会不会知道。而且,由于ByteBase已记录了自己的模式副本,因此ByteBase比较具有带外模式的实时模式变化时,它将注意到差异和表面架构漂移异常。如果要进行更改,则应使用基线再次调和模式状态。

在本节中,您将被引导完成此过程。

  1. 转到雪花,然后在那里添加一列。确保添加新列。
    sf-alter-add-age

  2. 等待10分钟(字节键大约每10分钟进行检查)。返回bytebase,您可以在数据库DB_DEMO_BB上找到架构漂移
    bb-db-schema-drift

异常中心也表面漂移
bb-ac-drift

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

  2. 使用基线从实时数据库架构调和架构状态。转到db_demo_bb> 迁移历史,然后单击建立新的基线
    bb-db-establish-new-baseline

  3. 它将创建一个问题。单击解决使其完成。
    bb-is-baseline-done

  4. 回到DB_DEMO_BB或异常中心,您会发现漂移已经消失。
    bb-db-no-anomalies
    bb-ac-no-anomaly

摘要和下一个

现在,您已经将雪花与字节键连接在一起,并尝试了UI工作流程进行模式更改。 BYTEBASE将为您记录完整的迁移历史记录。使用团队或企业计划,您甚至可以进行模式漂移检测。

在下一篇文章中,您将尝试使用Gitops Workflow,该工作流将您的雪花架构存储在GitHub中,并在将更改提交到存储库后触发更改,以将您的雪花更改工作流程提升到新的数据库DEVOPS -Database as Code