为什么使用flyway

一般的部署流程

  • 开发人员将应用程序打包、按顺序汇总并整理数据库升级脚本
  • DBA拿到数据库升级脚本检查、备份、执行,以完成数据库升级
  • 应部署人员拿到应用部署包,备份、替换,以完成应用程序升级


用上 Flyway 之后的应用部署流程大概是这样的:

  • 开发人员将应用程序打包(直接jenkins piplen 流程线构建 这时候flyway就已经在对应的环境执行了,脚本已经在库里生成了)
  • 应部署人员拿到应用部署包,备份、替换,以完成应用程序升(Flyway将自动执行升级/备份脚本)—> 我们这边是Jenkins ci集成化构建部署,dockerfile构建镜像 ,k8s容器编排,在ci的过程中脚本就已经执行了,就不需要部署人员再去操作数据库了。

在我平时的团队开发中,我们的代码是有版本控制的,可以多人协作持续集成(工具也非常多)。但是数据库的脚本确实需要手动的去执行,团队内人多,你执行你的我执行我的,就会导致很多问题:

  • 这台机器上的数据库处于什么状态?
  • 此脚本是否已应用?
  • 测试环境的数据库表结构和生产是否一致?
  • 测试环境要新增一台应用实例,该如何搭建数据库,必备的数据和表结构如何快速同步?

所以工作中,经常听到测试小伙伴们抱怨,明明已经提测了,但是却出现 A环境正常运行,B环境就报错,找开发定位又花费很多时间。究其原因,大多数是因为数据库没有类似代码那样的版本控制自动化工具,导致管理混乱。

Flyway 这个数据库迁移库就是要解决这个问题的,可以帮我们根据数据库当前的状态,区分哪些脚本执行过,哪些没有执行,然后根据目标数据库的当前状态,决定应该执行哪些数据库脚本


方案一

将flyway 单独维护在一个项目中,上线时手动操作,版本信息统一管理

项目地址

flyway

目录结构以及命名规范

项目结构

└─ibeautypass-ly-flyway
└─src
└─main
└─resources
└─db
└─migration
├─customer (命名规范:项目名称)
│ ├─version_1_0_0 (版本号 )
│ ├─V1_0_0_202204012042_02__create.sql (版本号 )
│ └─version_1_0_1
│ ├─V1_0_0_202204112042_02__update.sql (版本号 )
└─minapp (命名规范:项目名称)
├─version_1_0_0 (版本号 )
│ ├─V1_0_0_202204012042_01__create.sql (版本号 )
└─version_1_0_1
│ ├─V1_0_0_202204112042_01__update.sql (版本号 )

![image.png](https://img-blog.csdnimg.cn/img_convert/42953389a0c06e0b5465a80938c1b352.png#clientId=u85b77ec0-71ca-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=435&id=u90f1a424&margin=[object Object]&name=image.png&originHeight=544&originWidth=499&originalType=binary&ratio=1&rotation=0&showTitle=true&size=49535&status=done&style=none&taskId=ucd2cbd3f-d75f-4033-8be8-5145feb902e&title=项目结构以及命名规范&width=399.2 “项目结构以及命名规范”)

命名规范

在定义初始化脚本时,版本号建议为V+(编号)+yyyymmddhhmm+组号(一组01,二组02)+ __(为双下划线)+create,例如
V1_0_0_202204012042_01__create.sql。

在定义变更版本时,版本号为 V+(编号)+yyyymmddhhmm+组号(一组01,二组02)+ __(为双下划线)+update名称,例如
V1_0_0_202204112042_01__update.sql。
:::info

flyway最佳生产实践相关推荐

  1. nodejs 实践项目_NodeJS:最佳生产实践

    nodejs 实践项目 by Saurabh Rayakwar 通过索拉比·雷阿克瓦尔 NodeJS:最佳生产实践 (NodeJS: Best Practices for Production) Th ...

  2. flyway常用配置_Spring Boot 2 实战:使用 Flyway 管理你数据库的版本变更

    1. 前言 随着项目的不断迭代,数据库表结构.数据都在发生着变化.甚至有的业务在多环境版本并行运行.数据为王的时代,管理好数据库的版本也成为了迫切的需要.如何能做到像 Git 之类的版本控制工具来管理 ...

  3. SpringBoot系列: 使用 flyway 管理数据库版本

    Flyway 和 Liquibase 都是 Java 项目中常用的 DB migration 工具, 从使用简便性看,Flyway 比 Liquibase 更简单, 从 github 的 star 数 ...

  4. Maven学习总结(33)——开发人员如何使用 Flyway 插件管理数据库版本

    一.前言. 想到要管理数据库的版本,是在实际产品中遇到问题后想到的一种解决方案,当时各个环境的数据库乱作一团,没有任何一个人(开发.测试.维护人员)能够讲清楚当前环境下的数据库是哪个版本,与哪个版本的 ...

  5. Flyway数据库迭代升级迁移

    Flyway简介 Flyway 是一款开源的数据库版本管理工具.它可以很方便的在命令行中使用,或者在Java应用程序中引入,用于管理我们的数据库版本. 在项目或产品中,很难一开始就把业务理清楚,把数据 ...

  6. 怎样避免每次都解释大量指令?

    简介:向量化引擎为PolarDB-X的表达式计算带来了显著的性能提升. 作者:君启 介绍 PolarDB-X是阿里巴巴自研的云原生分布式数据库,采用了计算-存储分离的架构,其中计算节点承担着大量的表达 ...

  7. Java生鲜电商平台-SpringCloud微服务架构高并发参数优化实战

    Java生鲜电商平台-SpringCloud微服务架构高并发参数优化实战 一.写在前面 在Java生鲜电商平台平台中相信不少朋友都在自己公司使用Spring Cloud框架来构建微服务架构,毕竟现在这 ...

  8. 性能优化之道】每秒上万并发下的Spring Cloud参数优化实战

    本文为转载文章,作者:中华石杉,十余年BAT架构经验,倾囊相授.作者微信公众号:石杉的架构笔记(ID:shishan100) 一.写在前面 相信不少朋友都在自己公司使用Spring Cloud框架来构 ...

  9. 每秒上万并发下的Spring Cloud性能优化之道

    一.写在前面 相信不少朋友都在自己公司使用Spring Cloud框架来构建微服务架构,毕竟现在这是非常火的一门技术. 如果只是用户量很少的传统IT系统,使用Spring Cloud可能还暴露不出什么 ...

最新文章

  1. 不使用乘法、除法或mod,实现两数相除
  2. 06. 为知笔记 -- 我的修改
  3. RESET MASTER和RESET SLAVE使用场景和说明,以及清除主从同步关系
  4. 方正ceb阅读器手机版_海信阅读手机A5Pro 经典版评测:体验和阅读完美平衡
  5. java占用提示_Java显示使用或已经覆盖了api为啥?
  6. UA池和IP代理池使用
  7. list 根据某个数字所在位置_【Python学习笔记】09、使用list和tuple
  8. Mono for android,Xamarin点击事件的多种写法
  9. enter power save mode解决
  10. SAP License:初学作业费用分割
  11. Soul Api 网关发布 1.0.3-RELEASE 版本
  12. Java拥挤度,零基础学JAVA难不难?
  13. Keil MDK5 破解
  14. 供应链管理-降低产品复杂度
  15. powder-puff 花拳绣腿
  16. javax.faces.FacesException: Unable to find CDI BeanManager的解决方法
  17. MSP430F5529LP(一)IIC与OLED的HELLOWRLD
  18. 【H.264】码流解析 annexb vs avcc
  19. the unfamiliar words and sentences of《The Great Gatsby》1
  20. IDEA上传项目到GitHub

热门文章

  1. daimayuan每日一题#851 Good Permutations
  2. 批量修改照片名称的快速方法
  3. php计数器归零,php计数器lt;?/*-一个简单的计数器*/functio 爱问知识人
  4. 美国计算机加音乐专业,美国音乐博士解析
  5. 恋人日记服务器维护中,知乐日记:恋人不会在最终相遇 因为他们本来就一直在一起...
  6. 如何设置云服务器语言,云服务器如何更换语言
  7. 谷歌服务框架(google services framework)是什么?
  8. 什么软件可以听学业水平测试网课,免费听网课app推荐
  9. 计算机动漫与游戏制作初体验,《无尽远征》隐藏动画大师 启动“游漫双系统”之约...
  10. Pythonnbsp;异常处理