flyway可否使用到当前开发环境

Flyway是什么?

Flyway是一款开源的数据库版本管理工具,可以实现管理并跟踪数据库变更,支持数据库版本自动升级,而且不需要复杂的配置,能够帮助团队更加方便、合理的管理数据库变更。
例:创建两个sql变更文件,项目启动后会将两个文件中的sql语句全部执行。

1、痛点

  1. 每次封板都要执行一次数据库,很久没更新的环境中,数据库都需要做到到处找sql文件进行执行,很麻烦

2、优点

Flyway可以在微服务上线时自动执行SQL脚本,不需要再执行工单

3、为什么不用Flyway

3.1、对于开发

  1. 有些微服务提早上线,但是也会同时更新在主干分支中,所以用一个修改会存在于多个版本中,上线到同一个环境中时会出问题
  2. 分库分表虽然支持Flyway,但是复杂度高,容易出问题,开发与拓展均较难完全验证
  3. 每个涉及到数据库的微服务都要配置一组Flyway的参数,对于运维也不友好
  4. 微服务拆分与合并,flyway则需要额外投入人力进行开发

3.2、对于运维

  1. Flyway本质上是使用微服务自己的资源执行SQL语句,在常规场景下对微服务和MySQL的资源消耗可控,但在大规模数据迁移或复杂DDL操作时需重点优化,这在使用DMS的时候,只需要运维保证不影响线上环境的MySQL即可
  2. 虽然Flyway也有版本工具,如果线上出问题,DMS可以直接提工单进行执行,但是Flyway则需要重新配置执行规则,走上线流程,比较消耗人力
  3. 如果是pod集群使用,则需要额外配置Kubernetes Job,这才能保证多个pod启动时避免出问题

4、原有痛点解决方式

删除对应环境对应数据库的表,重新使用ddl进行创建

推荐阅读

  1. Flyway详解(使用说明及避坑指南、一文搞懂flyway)
  2. 数据库/SQL 版本管理工具选型指北:Flyway、Liquibase、Bytebase、阿里 DMS
  3. flyway官网
  4. Flyway 常见问题与解决方案
  5. 【SpringBoot系列】微服务集成Flyway