goose适配GaussDB开源验证任务心得

举报
yd_213120826 发表于 2024/12/16 11:25:49 2024/12/16
【摘要】 任务主要是完成Goose数据库迁移工具连接GaussDB数据库并完成正常数据迁移以及版本管理的验证。

背景介绍

开源for Huawei(https://developer.huaweicloud.com/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做验证。

安装部署

  1. 在ECS服务器上clone goose的代码:
    git clone https://github.com/pressly/goose.git

  2. 通过go build -o goose ./cmd/goose构建命令

    将构建好的goose服务上传到$Path/bin目录下
    mv goose /usr/local/go/bin/

  3. 创建数据库迁移文件管理目录并验证goose工具。
    数据库迁移文件管理目录用于管理各版本的迁移文件
    mkdir migrations
    通过-dir来指定当前的版本管理目录。当创建完成migrations后,目录下没有文件时,执行goose命令会报错。通过goose status命令验证。

添加了数据库迁移文件后,可以正常查看当前数据库中的迁移状态。

命令验证步骤

  1. 子命令–create验证
    命令示例:goose -dir migrations postgres " user=userpassword=user password=password dbname=dbnamehost=dbname host=host port=$port sslmode=disable" create add_some_column sql

    创建sql文件内容:

  2. 子命令–status验证
    命令示例:
    goose -dir migrations postgres " user=userpassword=user password=password dbname=dbnamehost=dbname host=host port=$port sslmode=disable" status
    未执行pending状态:

    表状态:

    已执行up状态:

    表状态:

  3. 子命令–up验证
    up命令的执行流程如下:

    命令示例:
    goose -dir migrations postgres " user=userpassword=user password=password dbname=dbnamehost=dbname host=host port=$port sslmode=disable" up

    goose_db_version表:

    users表:

  4. 子命令–down验证
    down命令的执行流程如下:

    命令示例:
    goose -dir migrations postgres " user=userpassword=user password=password dbname=dbnamehost=dbname host=host port=$port sslmode=disable" down


    表状态:

  5. 子命令–up-to验证
    命令示例:
    goose -dir migrations postgres " user=userpassword=user password=password dbname=dbnamehost=dbname host=host port=$port sslmode=disable" up-to 3

    表状态:



  6. 子命令–down-to验证
    命令示例:
    goose -dir migrations postgres " user=userpassword=user password=password dbname=dbnamehost=dbname host=host port=$port sslmode=disable" down-to 1

    表状态:

开发总结

Goose的验证由于直接使用的是PostgreSQL原生驱动,所以可以直接使用Goose来连接Gaussdb做验证。所以当前任务主要需要部署安装工具后,对每个子命令进行验证,需要耐心的去执行每个子命令以及子命令执行后数据库中的数据是否正确。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。