数据库开发运维作为研发流程上的刚需场景,目前在行业内还尚未形成标准或者主流方案。 Zadig 作为链接开发者的云原生持续交付平台,对该领域抱有持续的关注度。今天我们介绍的主角是开源数据库版本管理工具 Liquibase,本文将介绍 Liquibase 如何结合 Zadig,实现数据和业务同步变更,在充分验证后对数据做回滚的软件交付实践。
Liquibase (https://www.liquibase.org/) 是一个用于跟踪、管理和应用数据库变化的开源的数据库重构工具。支持丰富的格式(JSON、YAML、SQL、XML)来定义数据库更改,便于版本控制。支持多种运行方式,如命令行、Spring Boot 集成、Maven 插件、Gradle 插件等。它的目标是提供一种数据库类型无关的解决方案,通过执行 Schema 类型的文件进行变更,使用者无需维护多种数据库脚本及掌握多种数据库语言,对于大型项目友好,适合多团队协作开发。
下面以 Liquibase 中支持的 SQL 脚本为例,简单阐述研发过程中如何顺滑地执行数据变更和恢复。
microservice-demo
├── database-change
│ ├── liquibase-conf
│ │ ├── dev
│ │ │ ├── example-changelog.sql # dev 环境待执行的变更集
│ │ │ └── liquibase.properties # dev 环境 Liquibase 配置文件
│ │ ├── prod
│ │ │ ├── example-changelog.sql # prod 环境待执行的变更集
│ │ │ └── liquibase.properties # prod 环境 Liquibase 配置文件
│ │ └── qa
│ │ ├── example-changelog.sql # qa 环境待执行的变更集
│ │ └── liquibase.properties # qa 环境 Liquibase 配置文件
根据实际的情况修改 Liquibase config 文件中数据库相关配置。
changeLogFile=example-changelog.sql
liquibase.command.url=jdbc:mariadb://10.10.10.10:3306/prod
liquibase.command.driver=org.mariadb.jdbc.Driver
liquibase.command.classpath=$HOME/liquibase/bin/internal/lib/mariadb-java-client.jar
liquibase.command.username: root
liquibase.command.password: root
microservice-dev
、microservice-qa
、microservice-prod
的配置和使用。包括:新建工作流 -> 配置数据变更任务 -> 配置构建任务 -> 配置部署任务。
新建工作流
点击 「新建工作流」-> 选择「自定义工作流」-> 输入工作流名称 microservice-dev
。 配置数据变更任务
#!/bin/bash
set -ex
export JAVA_HOME=$HOME/jdk
cd zadig/examples/microservice-demo/database-change/liquibase-conf/dev
liquibase update
至此,Liquibase 数据变更任务配置完成,更多 Liquibase 的工作原理和 CLI 使用方式详见 Liquibase 官方文档。
配置构建任务
构建
阶段 -> 点击「+ 任务」-> 选择「构建」。 service-build
-> 选择镜像仓库 -> 选择服务组件及构建,点击「确定」。 配置部署任务
部署
阶段 -> 点击「+ 任务」-> 选择 「部署」。 deploy
-> 选择 dev 环境 -> 选择服务来源:其他任务输出,选择构建任务 service-build
,点击「确定」。 工作流任务配置完成后,点击「保存」。至此已完成 microservice-dev
工作流任务的配置,其他工作流的具体配置类似,不再赘述。
配置自动化测试
测试
阶段 -> 点击「+ 任务」-> 选择 「通用任务」。 e2e-test
-> 完成 e2e-test
任务的配置(请根据自己的实际情况来配置自动化测试)。 配置数据变更回滚任务
数据回滚
阶段 -> 点击「+ 任务」-> 选择 「通用任务」。 sql-rollback-liquibase
-> 选择 java 软件包、 liquibase 软件包、配置代码库信息和 shell 脚本执行。 具体脚本参考如下:#!/bin/bash
set -ex
export JAVA_HOME=$HOME/jdk
cd zadig/examples/microservice-demo/database-change/liquibase-conf/dev
liquibase rollbackCount 3
点击「执行」,确认执行变量,选择对应需要更新的服务组件和代码信息,点击「启动任务」。 系统会顺序执行 数据变更 -> 构建 -> 部署 -> 测试 -> 数据回滚
。点击 sql-change-liquibase
任务可查看 Liquibase 数据变更执行过程的详细日志。 sql-change-liquibase
任务执行完毕后查询数据库中信息如下。 点击 sql-rollback-liquibase
任务查看 Liquibase 数据回滚的详细过程。 任务执行完成后再次查看数据库中数据如下,可发现在此次流程中创建的数据表均已被清理。
更多 Zadig 的使用姿势可参考 官网文档。
关于数据库/SQL 版本管理工具的更多介绍可参考以下内容。
Zadig,让工程师更专注创造。欢迎加入 开源吐槽群🔥
|