Spawn使用

1、介绍

官网:https://spawn.cc/

日常学习或开发时,遇到需要使用到数据库,如果在公司(数据库肯定不能随便用来测试,即便是测试的库,拿来做自己学习测试用那也不特别合适),就更别说在家了。正常来说我们肯定是要在本地安装自己需要的数据库。那么有没有可以不在本地安装数据库就可以呢?那么接下来的Spawn就可以完美的解决这个问题。
Spawn使提供远程的数据库副本,供我们学习开发或测试使用。Spawn的数据库副本是托管在云上,因此不需要在本地安装数据库服务器了。
Spawn需要用到GitHub账号授权使用。没有GitHub的可以先去注册。
Spawn目前支持如下的数据库引擎:

  • MSSQL
  • PostgreSQL
  • MySQL
  • MongoDB
  • Redis

Spawn数据库副本的存储结构与Docker类似,也有imagecontainer,使用时先创建image,再创建container

2、安装Spawn

安装路径:https://docs.spawn.cc/getting-started/installation

安装过程很简单,我这里选择的window安装,下载spawnctl.ext文件到本地,然后将下载的文件放到自己定义的文件目录,官网建议的是放在C:\Program Files\Spawn,这个可以根据自己的喜好调整。然后将对应的目录配置到path环境变量。
检查是否安装成功:

spawnctl version
--输出:
Client Version: 0.32.26204
Latest Client Version: 0.35
Server Version: 0.0.4.0

A new version of the spawnctl CLI is available!
Visit https://www.spawn.cc/docs/getting-started#download-and-install-spawn to install.

使用Spawn之前,必须先使用GitHub创建账户,成功后使用如下命令进行授权。

spawnctl auth

执行命令后会在打开浏览器,然后点提交后,控制台输出结果。

Please wait, authenticating...
Authenticated successfully.

A new version of the spawnctl CLI is available!
Visit https://www.spawn.cc/docs/getting-started#download-and-install-spawn to install.

到这里安装Spawn就已经完成了。

3、使用Spawn

首次使用Spawn时,需要执行spawnctl onboard命令。

3.1、数据镜像

操作数据镜像命令如下:

命令 说明
create data-image 创建镜像
get data-image 获取镜像
delete data-image 删除镜像
update data-image 更新镜像

3.1.1 创建数据镜像

创建数据镜像之前,先创建配置development.yaml文件,文件内容如下:

sourceType: empty
name: th-test
engine: mysql
tag: v1.0
version: 8.0.25
lifetiime: 24h

配置文件内容解释:

  • sourceType:Spawn支持emptyscriptsbackup
  • name:数据镜像名称
  • engine:数据库引擎
  • tag:数据镜像标签
  • version:数据库版本
  • lifetiime:数据镜像存活时间 不配置默认永久

进入到建好的配置文件目录下,使用命令:

spawnctl create data-image -f .\development.yaml
这里也可以使用绝对路径
spawnctl create data-image -f D:\test\development.yaml
结果:
Data image 'th-test' (14410) created!

在命令后面可以附加属性修改配置文件的属性:
--tag--name--lifetiime

3.1.2 获取数据镜像

spawnctl get data-images
或
spawnctl get data-image <ImageName[:Tag]_Or_ImageID>

其中spawnctl get data-image后面可以跟镜像名称或镜像ID,如果不跟效果与spawnctl get data-images一致

3.1.3 更新数据镜像

--添加数据镜像团队
spawnctl update data-image <ImageName[:Tag]_Or_ImageID> --team <GitHub_Team1> --team <GitHub_Team2>
--删除数据镜像团队
spawnctl update data-image <ImageName[:Tag]_Or_ImageID> --team <GitHub_Team1> --remove
--添加数据镜像标签
spawnctl update data-image <ImageName[:Tag]_Or_ImageID> --tag <Tag1> --tag <Tag2>
--删除数据镜像标签
spawnctl update data-image <ImageName[:Tag]_Or_ImageID> --tag <Tag1> --remove
--添加数据镜像有效时间
spawnctl update data-image <ImageName[:Tag]_Or_ImageID> --lifetime 2h
--修改数据镜像名称
spawnctl update data-image <OldImageName[:Tag]_Or_ImageID> --name <NewImageName>

3.1.4 删除数据镜像

spawnctl delete data-image <ImageNames[:Tag]_Or_ImageIDs>

命令后面可以跟数据镜像名称或ID,可以跟一个或多个,多个空格隔开,例如:

spawnctl delete data-image dev test
spawnctl delete data-image 1001 1002

注意:如果数据镜像里面存在数据容器,则删除失败,必须要先将里面的容器删除。

3.2、数据容器

操作数据容器命令如下:

命令 说明
create data-container 创建数据容器
get data-container 获取数据容器
update data-container 更新数据容器
delete data-container 删除数据容器
save data-container 保存数据容器
reset data-container 重置数据容器
load data-container 加载数据容器
logs data-container 查看数据容器日志
proxy data-container 代理数据容器
graduate data-container 通过数据容器创建数据镜像

3.2.1 创建数据容器

spawnctl create data-container --image <ImageName[:Tag]_Or_ImageID> --lifetime <LifetimeDurationString>

--image 基于那个数据镜像创建数据容器
--lifetime 数据容器的存活时间
--name 数据容器的名称
使用如下:

spawnctl create data-container --image th-test --lifetime 1h --name crm-test
创建结果:
Data container 'crm-test' (119217) created!
-> Server=instances.spawn.cc;Port=31956;User Id=root;Database=mysql;Password=doVLwdfDmW4tKiA4
Use 'spawnctl get data-container crm-test -o yaml' to see these connection details again.

从结果可以看出数据库的用户名、密码、服务器、端口信息。

3.2.2 获取数据容器

获取数据容器命令与获取数据镜像命令差不多,也是有两个。

spawnctl get data-containers
或
spawnctl get data-container <ContainerName_Or_ContainerID>

spawnctl get data-container后面不跟容器名称或ID,列出所有容器,与spawnctl get data-containers效果一样。命令后面跟-o wide 或 json,可以查看数据容器更详细信息,json方式结果以JSON格式展现。

spawnctl get data-containers -o json
结果:
[{"id":117903,"imageId":12975,"name":"flyway-container","revision":"rev.0","engine":"PostgreSQL","engineVersion":"11.0","statusMessage":"Running data container 'flyway-container' (117903)","connectionString":"Host=instances.spawn.cc;Port=31443;Username=spawn_admin_uBsj;Database=foobardb;Password=GFOSBDDbU03rIxtc","host":"instances.spawn.cc","port":31443,"user":"spawn_admin_uBsj","password":"GFOSBDDbU03rIxtc","createdAt":1626857966,"expiresAt":0,"status":"Completed"},{"id":117924,"imageId":14283,"name":"test-container","revision":"rev.0","engine":"PostgreSQL","engineVersion":"11.0","statusMessage":"Running data container 'test-container' (117924)","connectionString":"Host=instances.spawn.cc;Port=31362;Username=spawn_admin_JraG;Database=postgres;Password=va1O34QqlQAXPydy","host":"instances.spawn.cc","port":31362,"user":"spawn_admin_JraG","password":"va1O34QqlQAXPydy","createdAt":1626861235,"expiresAt":0,"status":"Completed"},{"id":119167,"imageId":14411,"name":"oms","revision":"rev.0","engine":"MySQL","engineVersion":"8.0.25","statusMessage":"Running data container 'oms' (119167)","connectionString":"Server=instances.spawn.cc;Port=30467;User Id=root;Database=mysql;Password=20iDhEEUgVi1Blax","host":"instances.spawn.cc","port":30467,"user":"root","password":"20iDhEEUgVi1Blax","createdAt":1627299625,"expiresAt":0,"status":"Completed"},{"id":119217,"imageId":14411,"name":"crm-test","revision":"rev.0","engine":"MySQL","engineVersion":"8.0.25","statusMessage":"Running data container 'crm-test' (119217)","connectionString":"Server=instances.spawn.cc;Port=31956;User Id=root;Database=mysql;Password=doVLwdfDmW4tKiA4","host":"instances.spawn.cc","port":31956,"user":"root","password":"doVLwdfDmW4tKiA4","createdAt":1627309742,"expiresAt":1627313361,"status":"Completed"}]

3.2.3 更新数据容器

--更新数据容器存活时间
spawnctl update data-container <ContainerName_Or_ContainerID> --lifetime <LifetimeDurationString>
--更新数据容器名称 
spawnctl update data-container <OldContainerName_Or_ContainerID> --name <NewContainerName>

3.2.4 删除数据容器

spawnctl delete data-container <ContainerNames_Or_ContainerIDs>

与删除数据镜像一样,后面可以跟多个容器名称或ID,使用空格隔开。

3.2.4 保存数据容器

spawnctl save data-container <ContainerName_Or_ContainerID>

将指定的数据容器保存升级新的版本,如下:

spawnctl save data-container crm-test
结果:
Successfully saved data container 'crm-test'
New revision is 'rev.1'

从结果可以看出,创建出来的数据容器版本默认为rev.0,保存后的版本升级为rev.1

3.2.5 重置数据容器

spawnctl reset data-container <ContainerNames_Or_ContainerIDs>

重置命令后面也可以跟多个数据容器名称或ID,也是以空格隔开。常用的命令就介绍到这里,其他命令就不一一列出来了,使用方式都差不多。

至于怎么去连接数据库使用,这里就不做介绍了。

上一篇:协程gevent(monkey)的使用(并发)方便快捷


下一篇:node系列扯犊子之十一Child Process模块