PlanetScale是一个新的托管数据库提供商。它与其他的不同之处在于它用于迁移的分支/合并功能。
它允许开发人员从main
数据库模式创建分支,然后单独应用他们的模式更改。
应用它们后,可以无缝地打开、批准和合并部署请求。它承诺快速、不阻塞模式更改并且易于扩展。
他们的免费套餐很慷慨,有很多东西可以开始摆弄。
这将是关于如何使用 CLI 通过工作流完成一些基本任务的快速速成课程。
先决条件
安装了 PlanetScale、pscale
、CLI 实用程序:
CLI 安装说明
安装 MySQL Shell:
MySQL 外壳
我将使用 Linux 和 ZSH 作为参考。
登录
登录pscale
是一个简单但有趣的过程。首先运行auth login
命令:
> pscale auth login
进入全屏模式 退出全屏模式
这将在您的默认浏览器中打开一个选项卡,其中显示一个代码和一个confirm
按钮。
回头看看你的 shell,你应该会看到页面上列出的确认代码:
Confirmation Code: XXXXXXX If something goes wrong, copy and paste this URL into your browser: https://auth.planetscale.com/oauth/device?user_code=XXXXXXX
进入全屏模式 退出全屏模式
验证代码并在页面上接受后,您的终端应显示Successfully logged in.
消息。
创建数据库
一开始,您将没有任何数据库。第一步是创建一个(我使用thunks
作为数据库名称,但显然使用您想要的任何名称):
> pscale database create thunks
进入全屏模式 退出全屏模式
连接数据库
注意:文档说我们可以只使用pscale shell thunks
,但是我收到一个未知选项--defaults-extra-file
的错误,所以我们将手动进行。
现在我们有了一个数据库,让我们连接到它并看看我们有什么。在您的终端中创建通往数据库的隧道:
> pscale connect thunks Secure connection to database thunks and branch main is established!. Local address to connect your application: 127.0.0.1:3306 (press ctrl-c to quit)
进入全屏模式 退出全屏模式
这将为您提供一个本地地址,默认值:127.0.0.1
,和端口,默认值:3306
。使用这些来使用mysqlsh
shell 创建连接。如果它是默认端口,并且当提示输入密码时,您可以省略端口enter
而无需输入。由于连接过程被阻塞,您需要在不同的 shell 实例中执行此操作:
> mysqlsh --sql -uroot -h127.0.0.1
进入全屏模式 退出全屏模式
看看我们拥有的数据库:
> show databases; +--------------------+ | Database | +--------------------+ | thunks | | information_schema | | mysql | | sys | | performance_schema | +--------------------+ 5 rows in set (0.0279 sec)
进入全屏模式 退出全屏模式
我们看到列出了我们的新数据库thunks
。它应该是空的:
> show tables; Empty set (0.0245 sec)
进入全屏模式 退出全屏模式
正如我们所料。
分行
空数据库没有多大用处,所以让我们创建一个新分支来开始迁移。
PlanetScale 使用的分支很像git
。因此,我们可以创建一个新分支,执行我们的更改,然后要求维护者合并/部署这些更改。这是 PlanetScale 最有趣的功能之一。它允许单独发生更改并无缝部署。
默认情况下,会创建一个分支为main
的数据库。
要创建一个新分支,我们要使用所需的名称运行branch
命令。我们将首先添加一个用户表,这样我们就可以让一些人进入我们的数据集:
> pscale branch create thunks add-users-table
进入全屏模式 退出全屏模式
然后检查是否创建成功:
> pscale branch list thunks NAME STATUS PARENT BRANCH CREATED AT UPDATED AT NOTES ----------------- -------- --------------- ---------------- ---------------- ------- main n/a 14 minutes ago 13 minutes ago add-users-table main 1 minute ago 47 seconds ago
进入全屏模式 退出全屏模式
进行更改
我们之前创建的连接是到数据库的main
分支,但我们要进行的更改将在add-users-table
上。关闭mysqlsh
会话并终止连接进程。
现在,使用我们的新分支重新连接:
> pscale connect thunks add-users-table Secure connection to database thunks and branch add-users-table is established!. Local address to connect your application: 127.0.0.1:3306 (press ctrl-c to quit)
进入全屏模式 退出全屏模式
以与之前相同的方式重新连接 MySQL Shell:
> mysqlsh --sql --uroot -h127.0.0.1
进入全屏模式 退出全屏模式
现在我们可以进行更改:
> CREATE TABLE users ( login VARCHAR(50), name VARCHAR(50) ); > describe users; +-------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+-------+ | login | varchar(50) | YES | | NULL | | | name | varchar(50) | YES | | NULL | | +-------+-------------+------+-----+---------+-------+ 2 rows in set (0.0183 sec)
进入全屏模式 退出全屏模式
我们已经对我们的分支进行了更改。让我们验证这些尚未传播到我们的main
分支。执行断开/重新连接舞蹈并选择main
分支。然后检查数据库中的表:
> show tables; Empty set (0.0247 sec)
进入全屏模式 退出全屏模式
完美的。
部署请求
现在我们想要的更改在我们自己的分支上,我们需要创建一个部署请求以将它们合并到main
分支中。这与 GitHub 或 GitLab 中的 PR/MR 非常相似。
我们通过使用数据库名称和我们想要合并的分支运行deploy-request
命令来做到这一点:
> pscale deploy-request create thunks add-users-table
进入全屏模式 退出全屏模式
然后我们可以列出待处理的部署请求:
> pscale deploy-request list thunks ID NUMBER BRANCH INTO BRANCH APPROVED STATE DEPLOY STATE DEPLOYABLE QUEUED AT STARTED AT FINISHED AT CREATED AT UPDATED AT CLOSED AT -------------- -------- ----------------- ------------- ---------- ------- -------------- ------------ -------------- -------------- ------------- ------------ ------------ ----------- zdsty5vxjfin 1 add-users-table main No open ready Yes 1 minute ago 1 minute ago
进入全屏模式 退出全屏模式
就像 PR/MR 一样,我们需要获得批准才能将更改部署到main
。这使用上面列出的number
作为标识符:
> pscale deploy-request review --approve thunks 1 Deploy request thunks/1 is approved.
进入全屏模式 退出全屏模式
部署更改
现在我们的更改已获得批准,我们可以将它们部署到 main 并迁移数据库:
> pscale deploy-request deploy thunks 1 Successfully deployed zdsty5vxjfin from add-users-table to main.
进入全屏模式 退出全屏模式
我们应该在清理之前验证我们的更改是否已经完成。连接到主分支并打开一个 MySQL Shell,然后检查架构:
> describe users; +-------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+-------+ | login | varchar(50) | YES | | NULL | | | name | varchar(50) | YES | | NULL | | +-------+-------------+------+-----+---------+-------+ 2 rows in set (0.0213 sec)
进入全屏模式 退出全屏模式
太好了,我们的更改主要存在。现在进行一些整理任务。
让我们从关闭部署请求开始:
> pscale deploy-request close thunks 1 Deploy request thunks/1 was successfully closed.
进入全屏模式 退出全屏模式
现在我们可以删除分支:
> pscale branch delete thunks add-users-table ? Please type thunks/add-users-table to confirm: thunks/add-users-table Branch add-users-table was successfully deleted from thunks.
进入全屏模式 退出全屏模式
我们已经迁移了我们的数据库并清理了请求和分支。
结论
PlanetScale 绝对很酷。它带来了非常熟悉的分支、请求和合并到实时数据库的感觉。
它承诺快速、不阻塞模式更改并且易于扩展。
我希望 CLI 文档更好。在顶级命令之后它非常稀疏,所以help
消息将是你的朋友。
现在我已经完成了本地开发和 CLI,我很高兴能够尝试使用应用程序和部署。