flyway可否使用到当前开发环境
Flyway是什么?
Flyway是一款开源的数据库版本管理工具,可以实现管理并跟踪数据库变更,支持数据库版本自动升级,而且不需要复杂的配置,能够帮助团队更加方便、合理的管理数据库变更。
例:创建两个sql变更文件,项目启动后会将两个文件中的sql语句全部执行。
1、痛点
- 每次封板都要执行一次数据库,很久没更新的环境中,数据库都需要做到到处找sql文件进行执行,很麻烦
2、优点
Flyway可以在微服务上线时自动执行SQL脚本,不需要再执行工单
3、为什么不用Flyway
3.1、对于开发
- 有些微服务提早上线,但是也会同时更新在主干分支中,所以用一个修改会存在于多个版本中,上线到同一个环境中时会出问题
- 分库分表虽然支持Flyway,但是复杂度高,容易出问题,开发与拓展均较难完全验证
- 每个涉及到数据库的微服务都要配置一组Flyway的参数,对于运维也不友好
- 微服务拆分与合并,flyway则需要额外投入人力进行开发
3.2、对于运维
- Flyway本质上是使用微服务自己的资源执行SQL语句,在常规场景下对微服务和MySQL的资源消耗可控,但在大规模数据迁移或复杂DDL操作时需重点优化,这在使用DMS的时候,只需要运维保证不影响线上环境的MySQL即可
- 虽然Flyway也有版本工具,如果线上出问题,DMS可以直接提工单进行执行,但是Flyway则需要重新配置执行规则,走上线流程,比较消耗人力
- 如果是pod集群使用,则需要额外配置Kubernetes Job,这才能保证多个pod启动时避免出问题
4、原有痛点解决方式
删除对应环境对应数据库的表,重新使用ddl进行创建