引言:
如果你是一个独立开发者或者不需要维护多个系统,那么维护数据库版本并不复杂。但是如果你的团队正在快速迭代或者同时开发多个功能,在多个环境版本并行,在多个生产服务器上部署你的服务,那么数据库的管理将变成一件麻烦事。如何更新所有的数据库,并维护好所有的更新记录,把多个人的操作合并起来带来了挑战。
我们团队在开发的过程中也有同样的困扰。这篇文章将介绍我们团队是如何通过Flyway将这些问题逐一解决。
Flyway基本概念
什么是flyway,为什么要用flyway
flyway是数据库版本控制管理工具,用于进行sql脚本版本控制和数据库迁移。
以前我们的数据库更改都是通过在某一个文件夹中添加一条sql文件,然后手动执行的。
这样在一个新环境进行数据库迁移时就会衍生出一系列的问题:
需要人工手动一条一条地执行这些脚本
有些时候,不恰当的命名会使这些sql脚本的执行顺序变得难以确定
如果手动执行时,脚本执行一半发生了一些其他的事情中断了执行人的操作,那么在下次执行时怎么知道当前数据库的sql执行到哪里了,哪些成功执行了哪些没有执行成功
所以我们迫切地需要一个工具来处理这些问题——flyway
flyway是如何工作的
flyway会在项目启动时,完成建立数据库连接池后自动执行如下操作:
1.如果数据库是一个空的数据库,flyway会创建一个名为flyway_schema_history的sql执行记录表,如果不是一个空的数据库,flyway会跳过这一步
2.flyway会扫描项目指定路