mysql数据迁移工具_太火了!Flayway这款数据迁移工具了解一下。

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

896079e4eeb3b5d831960fd7dccff8e4.png

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

d4023e2dccdfdcccb05dd679d42117ec.png

Add Gradle Flyway plugin

1.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"

2.Build repo

$ ./gradlew build
Config Flyway

1.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'}

2.Build repo

$ ./gradlew build
Add Migration Scripts

1.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));

2.Create Mysql Database flyway_dev with user mysql and password mysql

3 Migration

$ ./gradlew flywayMigrate -i

67ad8fa6174950aea263fc805a41e42f.png

# 配置管理

对于DEV、QA、TEST、STAGE、PROD针对不同的环境,需要会使用不一样的数据库配置。

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

// config/dev/db.propertiesdb.url=jdbc:mysql://127.0.0.1:3306/flyway_devdb.user=mysqldb.password=mysql// config/test/db.propertiesdb.url=jdbc:mysql://127.0.0.1:3306/flyway_testdb.user=mysqldb.password=mysql// config/prod/db.propertiesdb.url=jdbc:mysql://127.0.0.1:3306/flyway_proddb.user=mysqldb.password=mysql

2.修改 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'}

3.Create Mysql Database flyway_test with user mysql and password mysql

4.Migration test env

$ ./gradlew -Penv=test flywayMigrate -i
# 写在最后

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

来源:http://aikin.me/2017/02/26/db-migration-flyway/

 往期推荐 

?

  • 自从用完Gradle后,有点嫌弃Maven了!速度贼快!
  • Dubbo 高危反序列化漏洞,存在远程代码执行风险,建议及时升级到2.7.7或更高版本!
  • MATLAB被禁,国产开发要多久?
 

点击


	
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于CentOS 7上的MySQL数据迁移,您可以采取以下步骤: 1. 在新的服务器上安装MySQL 5.7,并确保它与旧服务器上的版本相同。 2. 在新服务器上创建一个与旧服务器相同的数据库和用户,并授予适当的权限。 3. 在旧服务器上停止MySQL服务。 4. 在新服务器上启动MySQL服务,并确保它正在运行。 5. 在旧服务器上导出数据库: ``` mysqldump -u [username] -p[password] [database_name] > [file_name].sql ``` 6. 将导出的文件传输到新服务器。 7. 在新服务器上导入数据库: ``` mysql -u [username] -p[password] [database_name] < [file_name].sql ``` 8. 确认数据是否已成功导入。 对于CentOS 7上的MySQL 5.7主从数据迁移,您可以采取以下步骤: 1. 在新服务器上安装MySQL 5.7,并确保它与旧服务器上的版本相同。 2. 在新服务器上创建一个与旧服务器相同的数据库和用户,并授予适当的权限。 3. 在旧服务器上停止MySQL服务。 4. 在新服务器上启动MySQL服务,并确保它正在运行。 5. 在主服务器上执行以下命令: ``` FLUSH TABLES WITH READ LOCK; SHOW MASTER STATUS; ``` 6. 记下"File"和"Position"的值。 7. 在主服务器上导出数据库: ``` mysqldump -u [username] -p[password] --master-data=1 [database_name] > [file_name].sql ``` 8. 将导出的文件传输到新服务器。 9. 在从服务器上导入数据库: ``` mysql -u [username] -p[password] [database_name] < [file_name].sql ``` 10. 在从服务器上执行以下命令: ``` CHANGE MASTER TO MASTER_HOST='[主服务器IP地址]', MASTER_USER='[主服务器用户名]', MASTER_PASSWORD='[主服务器密码]', MASTER_LOG_FILE='[File的值]', MASTER_LOG_POS=[Position的值]; START SLAVE; ``` 11. 确认数据是否已成功导入并且主从同步正常。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值