官网:https://spawn.cc/
日常学习或开发时,遇到需要使用到数据库,如果在公司(数据库肯定不能随便用来测试,即便是测试的库,拿来做自己学习测试用那也不特别合适),就更别说在家了。正常来说我们肯定是要在本地安装自己需要的数据库。那么有没有可以不在本地安装数据库就可以呢?那么接下来的Spawn
就可以完美的解决这个问题。
Spawn
使提供远程的数据库副本,供我们学习开发或测试使用。Spawn
的数据库副本是托管在云上,因此不需要在本地安装数据库服务器了。
Spawn
需要用到GitHub
账号授权使用。没有GitHub
的可以先去注册。
Spawn
目前支持如下的数据库引擎:
Spawn
数据库副本的存储结构与Docker
类似,也有image
和container
,使用时先创建image
,再创建container
。
安装路径: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
就已经完成了。
首次使用Spawn
时,需要执行spawnctl onboard
命令。
操作数据镜像命令如下:
命令 | 说明 |
---|---|
create data-image | 创建镜像 |
get data-image | 获取镜像 |
delete data-image | 删除镜像 |
update data-image | 更新镜像 |
创建数据镜像之前,先创建配置development.yaml
文件,文件内容如下:
sourceType: empty name: th-test engine: mysql tag: v1.0 version: 8.0.25 lifetiime: 24h
配置文件内容解释:
Spawn
支持empty
、scripts
、backup
进入到建好的配置文件目录下,使用命令:
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
spawnctl get data-images 或 spawnctl get data-image <ImageName[:Tag]_Or_ImageID>
其中spawnctl get data-image
后面可以跟镜像名称或镜像ID,如果不跟效果与spawnctl get data-images
一致
--添加数据镜像团队 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>
spawnctl delete data-image <ImageNames[:Tag]_Or_ImageIDs>
命令后面可以跟数据镜像名称或ID,可以跟一个或多个,多个空格隔开,例如:
spawnctl delete data-image dev test spawnctl delete data-image 1001 1002
注意:如果数据镜像里面存在数据容器,则删除失败,必须要先将里面的容器删除。
操作数据容器命令如下:
命令 | 说明 |
---|---|
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 | 通过数据容器创建数据镜像 |
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.
从结果可以看出数据库的用户名、密码、服务器、端口信息。
获取数据容器命令与获取数据镜像命令差不多,也是有两个。
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"}]
--更新数据容器存活时间 spawnctl update data-container <ContainerName_Or_ContainerID> --lifetime <LifetimeDurationString> --更新数据容器名称 spawnctl update data-container <OldContainerName_Or_ContainerID> --name <NewContainerName>
spawnctl delete data-container <ContainerNames_Or_ContainerIDs>
与删除数据镜像一样,后面可以跟多个容器名称或ID,使用空格隔开。
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
spawnctl reset data-container <ContainerNames_Or_ContainerIDs>
重置命令后面也可以跟多个数据容器名称或ID,也是以空格隔开。常用的命令就介绍到这里,其他命令就不一一列出来了,使用方式都差不多。
至于怎么去连接数据库使用,这里就不做介绍了。