Flyway數據庫版本控制

前言:最近工做上遇到個問題,項目開發過程當中,開發代碼能夠經過svn來版本控制,但數據庫又該如何來管理呢?多我的接觸數據庫,當對錶、字段或數據修改後,又怎麼來同步呢?通過苦尋,發現了個叫flyway的開源項目:http://flywaydb.org/,java編寫,官方的介紹就是個人初衷,豈能不心動?html

 

官網是英文的,查了下竟然沒有中文文檔,難道沒有中國人用?java

 

慢慢看了下官方文檔,試着作了下,一次成功!(離開電腦,蹦達幾下,繼續坐回電腦)mysql

 

本身寫個小教程吧sql

 

一、將flyway-core-2.3.jar放到項目lib中,下載地址:http://flywaydb.org/getstarted/download.html數據庫

 

二、在src目錄下創建保存sql版本文件的路徑:src/db/migration,flyway默認查找路徑,能夠改,但不必。服務器


 
  

 

三、在sql版本文件路徑中增長sql文件,命名規則,如:V1__2014_4_13.sql ,V開頭+版本號+雙下劃線+描述,描述中能夠有下劃線,後綴爲sql。別問能不能修改這個規則,不然,我咬你。svn

 

四、增長flyway的java類,有命令行工具,但仍是java類用起來方便,以下:工具

package com.cms.flyway;

import java.io.IOException;
import java.util.Properties;

import com.googlecode.flyway.core.Flyway;

public class FlywayApp {
    
    // 讀取數據庫配置參數
    private static Properties config = new Properties();
    static {
        try {
            config.load(Thread.currentThread().getContextClassLoader().getResourceAsStream("activerecord.properties"));
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    
    // 執行數據庫版本升級
    public static void migration() {
        // Create the Flyway instance
        Flyway flyway = new Flyway();
        
        // Point it to the database
        flyway.setDataSource(config.getProperty("com.et.ar.ActiveRecordBase.url"), config.getProperty("com.et.ar.ActiveRecordBase.username"), config.getProperty("com.et.ar.ActiveRecordBase.password"));
        flyway.setInitOnMigrate(true);
        
        // Start the migration
        flyway.migrate();
    }
}

 

 

五、在服務器啓動的時候或者定時器 執行該類的migration()方法便可。google

 

六、第一次執行會生成一個專門存放數據庫schema_version的表url



 

七、之後數據庫有了新的改動,導出新版本sql文件(如:mysqldump -u -p databasename>/xx.sql)改成新版本命名文件放到db.migration路徑下,flyway會自動幫你更新數據庫版本的。

 

over!

相關文章
相關標籤/搜索