goose适配GaussDB开源验证任务心得
背景介绍
开源for Huawei(https://developer.huaweicloud.cn/programs/opensource/contributing/) 通过和公司、高校、社区的开发者合作,完成鲲鹏、昇腾、欧拉、鸿蒙、高斯、云服务等与开源软件的适配开发,帮助繁荣Huawei的基础生态,同时让开源软件能够更加简单、高效的运行于华为云上。
开始之前,开发者可以下载 开源for Huawei Wiki(https://gitcode.com/HuaweiCloudDeveloper/OpenSourceForHuaweiWiki/overview) 了解详细的开发步骤,技术准备,以及开发过程需要的各种资源。
工具简介
Goose工具是一款用于管理数据库迁移的工具,类似于Flyway,它可以方便地管理数据库模式的版本,并应用相应的SQL脚本。当你的自定义的migrations文件中写入多个sql文件时,可以通过Goose来执行这些sql文件以达到管理数据库迁移的功能。
验证思路
参考开源软件连接GaussDB驱动选择和问题记录(Go)中的方案一,goose工具使用的是PostgreSQL原生驱动,所以可以直接使用goose来连接gaussdb做验证。
安装部署
-
在ECS服务器上clone goose的代码:
git clone https://github.com/pressly/goose.git
-
通过go build -o goose ./cmd/goose构建命令
将构建好的goose服务上传到$Path/bin目录下
mv goose /usr/local/go/bin/ -
创建数据库迁移文件管理目录并验证goose工具。
数据库迁移文件管理目录用于管理各版本的迁移文件
mkdir migrations
通过-dir来指定当前的版本管理目录。当创建完成migrations后,目录下没有文件时,执行goose命令会报错。通过goose status命令验证。
添加了数据库迁移文件后,可以正常查看当前数据库中的迁移状态。
命令验证步骤
-
子命令–create验证
命令示例:goose -dir migrations postgres " user=password dbname=host port=$port sslmode=disable" create add_some_column sql
创建sql文件内容:
-
子命令–status验证
命令示例:
goose -dir migrations postgres " user=password dbname=host port=$port sslmode=disable" status
未执行pending状态:
表状态:
已执行up状态:
表状态:
-
子命令–up验证
up命令的执行流程如下:
命令示例:
goose -dir migrations postgres " user=password dbname=host port=$port sslmode=disable" up
goose_db_version表:
users表:
-
子命令–down验证
down命令的执行流程如下:
命令示例:
goose -dir migrations postgres " user=password dbname=host port=$port sslmode=disable" down
表状态:
-
子命令–up-to验证
命令示例:
goose -dir migrations postgres " user=password dbname=host port=$port sslmode=disable" up-to 3
表状态:
-
子命令–down-to验证
命令示例:
goose -dir migrations postgres " user=password dbname=host port=$port sslmode=disable" down-to 1
表状态:
开发总结
Goose的验证由于直接使用的是PostgreSQL原生驱动,所以可以直接使用Goose来连接Gaussdb做验证。所以当前任务主要需要部署安装工具后,对每个子命令进行验证,需要耐心的去执行每个子命令以及子命令执行后数据库中的数据是否正确。
- 点赞
- 收藏
- 关注作者
评论(0)