对于数据迁移的概念,相信大家已经都比较熟悉。那么,什么是数据迁移?为什么需要数据迁移?在这里就不再做相关分享啦~。接下来主要分享一下数据迁移工具 Flyway 使用。

Flyway is the Apache v2 licensed open-source tool that makes database migrations easy. It strongly favors simplicity and convention over configuration.

Flyway 是一款开源的数据库迁移工具,它认为简单和约定优于配置。没有繁琐的配置,有 6 个主要基本命令:Migrate, Clean, Info, Validate, Baseline 和 Repair。

Flyway received the highest distinction on the Thoughtworks Technology Radar by being placed in the adopt category.

如何使用 Flyway?

Flyway支持很多种和应用集成的方法,这里主要分享一下Gradle集成Flyway的使用。

Setup Repo db-migration-flyway:

$ gradle init --type java-libray

Add Gradle Flyway plugin

  • Change build.gradle file content

buildscript {repositories {maven { url "https://plugins.gradle.org/m2/" }}dependencies {classpath "gradle.plugin.com.boxfuse.client:flyway-release:4.1.1"}
}apply plugin: "idea"
apply plugin: 'java'
apply plugin: "org.flywaydb.flyway"
  • Build repo

$ ./gradlew build

Config Flyway

  • Change [build.gradle] file content

buildscript {repositories {maven { url "https://plugins.gradle.org/m2/" }}dependencies {classpath "gradle.plugin.com.boxfuse.client:flyway-release:4.1.1"}
}apply plugin: "idea"
apply plugin: 'java'
apply plugin: "org.flywaydb.flyway"flyway {driver = 'com.mysql.jdbc.Driver'url = "jdbc:mysql://127.0.0.1:3306/flyway_dev"user = 'mysql'password = 'mysql'table = 'flyway_dev_schema_version'locations = ["filesystem:${projectDir}/src/main/resources/db/migration/mysql"]sqlMigrationPrefix = 'MySQL-'
}repositories {jcenter()
}dependencies {compile 'mysql:mysql-connector-java:5.1.34'
}
  • Build repo

$ ./gradlew build

Add Migration Scripts

  • Create file MySQL-1_1__create_users_table.sql

CREATE TABLE USERS (ID         BIGINT PRIMARY KEY    AUTO_INCREMENT,USERNAME   VARCHAR(32)  NOT NULL UNIQUE,CREATED_AT TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3)
);
  • Create Mysql Database flyway_dev with user mysql and password mysql

  • Migration

$ ./gradlew flywayMigrate -i

配置管理

对于DEVQATESTSTAGEPROD针对不同的环境,需要会使用不一样的数据库配置。

  • 在工程目录下创建文件config/dev/db.properties, config/test/db.properties, config/prod/db.properties:

// config/dev/db.properties
db.url=jdbc:mysql://127.0.0.1:3306/flyway_dev
db.user=mysql
db.password=mysql// config/test/db.properties
db.url=jdbc:mysql://127.0.0.1:3306/flyway_test
db.user=mysql
db.password=mysql// config/prod/db.properties
db.url=jdbc:mysql://127.0.0.1:3306/flyway_prod
db.user=mysql
db.password=mysql
  • 修改 build.gradle 文件

buildscript {repositories {maven { url "https://plugins.gradle.org/m2/" }}dependencies {classpath "gradle.plugin.com.boxfuse.client:flyway-release:4.1.1"}
}apply plugin: "idea"
apply plugin: 'java'
apply plugin: "org.flywaydb.flyway"def properties = new Properties()
properties.load(project.file("config/${env}/db.properties").newReader())flyway {driver = 'com.mysql.jdbc.Driver'url = properties.get('db.url')user = properties.get('db.user')password = properties.get('db.password')table = 'flyway_dev_schema_version'locations = ["filesystem:${projectDir}/src/main/resources/db/migration/mysql"]sqlMigrationPrefix = 'MySQL-'
}repositories {jcenter()
}dependencies {compile 'mysql:mysql-connector-java:5.1.34'
}
  • Create Mysql Database flyway_test with user mysql and password mysql

  • Migration test env

$ ./gradlew -Penv=test flywayMigrate -i

写在最后

这里只是简单的分享了一下,GradleFlyway 的集成。Flyway 还有很多功能值得去探索...

原文链接

数据迁移工具 - Flyway相关推荐

  1. spring-cloud集成数据库版本迁移工具flyway

    spring-cloud集成数据库版本迁移工具flyway Flyway实现数据库版本同步有两种方式,一种就是直接导包,通过配置文件使用,还有一种就是自定义的方式. 一 .依赖+配置文件 1 flyw ...

  2. 达梦数据迁移工具的使用

    作为国产数据库,达梦是比较典型的一种,开发工作中会用到其他数据库表迁移到达梦数据库的问题,在此记录一下迁移方法也为他人提供方便. 该工具仅用于其他数据库表及文本文件迁移达梦,或达梦数据库表迁移到其他数 ...

  3. Sqoop数据迁移工具的使用

    文章作者:foochane 原文链接:https://foochane.cn/article/2019063001.html Sqoop数据迁移工具的使用 sqoop简单介绍 sqoop数据到HDFS ...

  4. Elasticsearch数据迁移工具elasticdump工具

    1.工具安装 #wget https://nodejs.org/dist/v8.11.2/node-v8.11.2-linux-x64.tar.xz#tar xf node-v8.11.2-linux ...

  5. Oracle的异构数据迁移工具 - OMW及ODI

    作者:eygle | English Version [转载时请以超链接形式标明文章出处和作者信息及本声明] 链接:http://www.eygle.com/archives/2009/03/orac ...

  6. 硬盘对拷/硬盘克隆/硬盘数据迁移工具

    硬盘对拷/硬盘克隆/硬盘数据迁移工具可以通过把旧硬盘中的数据一次性完完整整地复制到新硬盘上,达到新硬盘替换旧硬盘的目的.小编在这里给大家推荐的是易我分区大师这款工具.如果您的旧硬盘容量大小不够用需要更 ...

  7. 达梦数据库数据迁移工具的使用

    实验室三峡项目刚开始使用的是oracle数据库,现在要迁移到达梦数据库 一.迁移步骤参考链接 需要创建用户实例.创建用户实例使用[数据库配置助手]按照提示信息进行创建即可,此处不再赘述.创建实例后需要 ...

  8. GBase 8a 数据迁移工具4--- Oracle数据迁移工具“orato8a”

    GBase 8a MPP Cluster 根据不同场景需求提供多种便于用户操作的数据迁移工具.        orato8a 简介        orato8a 是一个可以快速.高效地从 oracle ...

  9. 达梦数据库DM8-DM数据迁移工具介绍和简单使用

    达梦数据库DM8-DM数据迁移工具介绍和简单使用 系列文章目录 本文环境 1.DM管理工具介绍 2.DM数据迁移工具简单使用 1.打开DM数据迁移工具 2.新建工程 3.新建迁移任务DM到DM 3.新 ...

最新文章

  1. 上接游戏人生Silverlight(4) - 连连看[Silverlight 2.0(c#)]
  2. css中div标签不置顶
  3. 启动脚本gameserver
  4. jquery ajax return值不能取得的解决方案
  5. stm32 udp连续发送大量数据_TCP和UDP详解
  6. Numpy Binary operations
  7. 应用电子计算机英文,应用电子技术英文介绍
  8. TLQ的安装路径不存在或不正确
  9. 时序分析-利用深度时空残差网络预测城市范围的交通流量
  10. java基础 Day05 内部类、Object类、匿名内部类;方法的覆写;抽象类和接口
  11. unity WWW读取StreamingAssets文件
  12. JSON和全局异常处理
  13. 【MySQL学习】DQL语言的学习 Data Query Language
  14. 随笔-学习编程有没有必要做笔记?如何做笔记?
  15. 英语基础语法-语态(被动语态Be done)
  16. 春生冬至时——今日冬至
  17. ImageMagick将图片转为渐进式jpeg(progressive jpeg)
  18. android10.0(Q) AOSP 增加应用锁功能
  19. c语言实现乘法口诀,乘法口诀表,C语言实现
  20. 也谈程序员的沟通能力

热门文章

  1. python commands_python之commands模块
  2. 若依前后端分离如何修改title标题呢?
  3. 如何将tomcat默认页面换成项目首页?
  4. dofilter在java中_在Filter的doFilter中进行重定向 出现异常
  5. 第12章[12.3] Ext JSGrid中的超链接列及其功能实现
  6. ShardingSphere JDBC 语句执行初探
  7. js add方法_Vue.js列表过渡
  8. android把js的注入和方法统一管理,android WebView 注入js 几种方式
  9. 加号和减号在一起怎么读_在家摄影怎么玩?拍摄小黄米场景搭建,摄影软件和修图软件介绍...
  10. D1. Kirk and a Binary String (easy version)