暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

使用Atlas CLI的声明性MySQL模式

原创 X丶 2022-10-12
751

概述

DevOps运动带来的最好的东西之一是基础设施即代码的概念。IaC允许您在特殊格式的文件中定义基础设施,并允许您使用自动化工具基于这些文件创建或修改基础设施。但是您知道您也可以用类似的方法管理数据库模式吗?

Atlas CLI是一个命令行工具,它通过在文件中保存模式的表示来帮助管理数据库的结构。它可以单独用于管理模式更改,也可以作为CI/CD管道的一部分,根据定义文件自动更新模式。在本文中,我们将介绍使用Atlas CLI生成模式定义文件的基础知识,以及使用该工具更新PlanetScale数据库的模式。

要遵循以下原则,你应该具备以下条件:

  • PlanetScale帐户。
  • 已安装并配置PlanetScale CLI。
  • 已安装并配置Atlas CLI

设置数据库

首先使用CLI在PlanetScale中创建一个新数据库。

pscale database create hotels_db
复制

现在创建一个用于连接新数据库的密码。

pscale password create hotels_db main <YOUR_PASSWORD_NAME>
复制

注意:给密码起一个名字可以让您识别PlanetScale仪表板中的凭证集。

注意USERNAME、ACCESS HOST URL和PASSWORD值,因为您将在下一节中用到它们。接下来,需要进入数据库的shell会话来创建表。运行以下命令以进入shell:

pscale shell hotels_db main
复制

运行以下SQL脚本以创建一个名为hotels的表:

CREATE TABLE hotels( id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT, name VARCHAR(50) NOT NULL, address VARCHAR(50) NOT NULL, stars FLOAT(2) UNSIGNED );
复制

生成模式定义文件

Atlas通过生成表示数据库模式的文件,使将“数据库作为代码”的方法应用到现有数据库变得很容易。在进行此操作之前,您需要创建一个连接字符串,以便CLI能够正确地连接到上一节中创建的PlanetScale数据库。使用以下格式创建您自己的连接字符串:

"mysql://<USERNAME>:<PASSWORD>@<ACCESS HOST URL>/hotels_db?tls=true"
复制

接下来,本文将使用<CONNECTION_STRING>作为上述连接字符串的引用。要基于上述数据库生成架构文件,请运行以下命令:

atlas schema inspect -u <CONNECTION_STRING> > schema.hcl
复制

现在应该有一个名为schema的文件。工作目录中的hcl。如果您检查它,它应该如下所示。请注意,外部表节点如何包含对hotels_db模式的引用,以及上一节中创建的每个列的定义。

table "hotels" { schema = schema.hotels_db column "id" { null = false type = int unsigned = true auto_increment = true } column "name" { null = false type = varchar(50) } column "address" { null = false type = varchar(50) } column "stars" { null = true type = float unsigned = true } primary_key { columns = [column.id] } } schema "hotels_db" { charset = "utf8mb4" collate = "utf8mb4_0900_ai_ci" }
复制

修改模式

修改模式只需要修改模式定义文件,并使用atlas schema apply命令应用它。让我们通过在stars列和primary_key节点之间添加以下代码片段,在hotels表中添加一个描述列:

column "description" { null = false type = varchar(100) }
复制

使用连接字符串和对模式的引用运行apply命令hcl文件。

atlas schema apply -u <CONNECTION_STRING> -f schema.hcl
复制

Atlas将向您显示它在应用更新的模式后将对数据库进行的更改。按键盘上的enter键确认更改。

-- Planned Changes: -- Modify "hotels" table ALTER TABLE `hotels_db`.`hotels` ADD COLUMN `description` varchar(100) NOT NULL Use the arrow keys to navigate: ↓ ↑ → ← ? Are you sure?: ▸ Apply Abort
复制

应用更改后,可以使用pscale shell(如上所述)并运行以下DESCRIBE命令来检查表:

DESCRIBE hotels;
复制

请注意表现在是如何包含描述列的。该列是在应用模式时由Atlas添加的。
image.png

总结

Atlas可以作为一个不可思议的工具添加到你的DevOps工具包中。它帮助您以代码的形式管理数据库,而不是用SQL命令手动管理模式。保持数据库模式的版本化可以让它具有问责性(通过配置Atlas在git操作上应用更改),并提供一个历史参考,以查看数据库结构如何随时间变化。需要注意的一点是,当Atlas与PlanetScale一起使用时,您将需要在非生产分支上使用它,因为DDL在生产分支上是禁用的。

原文标题:Declarative MySQL schemas with Atlas CLI
原文作者:Brian Morrison II
原文地址:https://planetscale.com/blog/declarative-mysql-schemas-with-atlas-cli

最后修改时间:2022-10-12 16:41:26
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论