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