Java应用的数据库迁移工具Flyway

最近折腾部署一年前的一个应用,发现一些由于一些细节已经忘记,常常可能多花费几个小时去重新解决问题的过程. 而有的过程之前写过KB,关键字一搜索就出来能省不少时间.

所以对于健忘的自己,还是多些记录,也不介意技术含量这个概念了.

印象中flyway应该是Java生态中很成熟的一个解决方案了,简略的记下使用过程.

安装

# Linux
wget -qO- https://repo1.maven.org/maven2/org/flywaydb/flyway-commandline/5.2.4/flyway-commandline-5.2.4-linux-x64.tar.gz | tar xvz && sudo ln -s `pwd`/flyway-5.2.4/flyway /usr/local/bin
wget https://repo1.maven.org/maven2/org/flywaydb/flyway-commandline/5.2.4/flyway-commandline-5.2.4-linux-x64.tar.gz
tar xzf flyway-commandline-5.2.4-linux-x64.tar.gz
# 可选
cp mysql-connector-java-5.1.41.jar /opt/flyway-5.2.4/drivers/

配置

主要在conf/flyway.conf文件

# 必需项
flyway.url=jdbc:mysql://<host>:<port>/<database>
flyway.user=test
flyway.password=test
# 升级数据库脚本位置
flyway.locations=filesystem:/opt/db/migration/

# 可选
# 用于非空数据库首次使用
flyway.baselineOnMigrate=true

使用

# 清空数据
./flyway clean
# 指定配置文件
./flyway -configFiles=./conf/flyway.conf clean

# 升级/迁移数据
./flyway migrate

资源