LiquiBase 进行数据库持续更新

LiquiBase  进行数据库版本管理。利用编辑好的sql文件或者xml文件进行数据库管理。

  • 支持几乎所有主流的数据库,如MySQL, PostgreSQL, Oracle, Sql Server, DB2等;
  • 支持多开发者的协作维护;
  • 日志文件支持多种格式,如XML, YAML, JSON, SQL等;
  • 支持多种运行方式,如命令行、Spring集成、Maven插件、Gradle插件等;
  • 支持csv文件导入

注意:并不能适用于带数据转移,不支持存储过程。



系统集成liquibase后,自动在数据库中创建两个表格databasechangelog、databasechangeloglock。存储了数据库更新的版本和一些具体信息。
第一个特定于 LiquiBase 的表称为  databasechangelog ,它跟踪应用到数据库的所有变更 —有助于跟踪谁执行了数据库变更以及原因。第二个特定于 LiquiBase- 的表是  databasechangelock ,标识出具有数据库变更锁的用户。


创建liquibase

步骤:
1.系统加入mysql-connector-java、liquibase

2、配置数据库相关


					org.liquibase
					liquibase-maven-plugin
					2.0.1
					
						/src/main/resources/my-changelog-master.xml
						com.mysql.jdbc.Driver
						jdbc:mysql://localhost:3308/test
						root
						root
					
					
						
							
								update
                                tag
                                rollbackSQL
                                rollback
							
						
					
				
3.配置web.xml

        liquibase.changelog
        /src/main/resources/my-db.changelog-master.xml
    
	
		liquibase.datasource
		java:jboss/datasources/LiquibaseDS
	
	
		liquibase.integration.servlet.LiquibaseServletListener
	

4.编写处理数据的my-db.changelog-master.xml


	
	


include 中连接的file就是需要处理的xml文件,也可以替换成sql文件。
file属性表示要包含的changelog文件的路径,这个文件可以是LiquiBase支持的任意格式,relativeToChangelogFile如果为true,则表示file属性表示的文件路径是相对于根changelog而不是CLASSPATH的,默认为false。
5.编写xml文件

		
			
				
			
			
				
			
			
			
		 
注意:
此处如果需要修改数据库,需要添加changeSet   。liquibase会检索到你新添加的changeSet,把添加的语句生成数据库脚本
修改数据库,并且把id author保存到databasechangelog 中,保存你修改信息。
在SQL 文件中,下划线行就是author和id
--liquibase formatted sql

--changeset songjiantao:1

CREATE TABLE `ceshi` (
	`ID` VARCHAR (200)
);


 
   


运行liquibase

首先当然是  mvn clean install

  • 更新数据库:mvn liquibase:update
  • 打版本标签:mvn liquibase:tag
  • 回滚到最近的更新版本,或指定的标签版本,或日期,或更新次数:mvn liquibase:rollback -Dliquibase.rollbackCount=1
  • 生成sql更新脚本:mvn liquibase:updateSQL

1、添加版本标签:

a、使用命令行:

mvn liquibase:tag -Dliquibase.tag=checkpoint

b、使用配置文件:

复制代码
    <executions>
        <execution>
            <phase>process-resourcesphase>
            <configuration>
                <tag>${project.version}tag>
            configuration>
            <goals>
                <goal>updategoal>
                <goal>taggoal>
            goals>
        execution>
    executions>

2、可以使用如下命令回滚到某个版本:

    mvn liquibase:rollback -Dliquibase.rollbackTag=checkpoint

对应的maven配置为:

复制代码
    <executions>
        <execution>
            <phase>process-resourcesphase>
            <configuration>
                <changeLogFile>src/main/resources/liquiabse/master-changelog.xmlchangeLogFile>
                <driver>${jdbc.driverClassName}driver>
                <url>${jdbc.url}url>
                <username>${jdbc.username}username>
                <password>${jdbc.password}password>
                <rollbackTag>1.1rollbackTag>
            configuration>
            <goals>
                <goal>updategoal>
                <goal>rollbackgoal>
            goals>
        execution>
    executions>
复制代码

多数据库下使用

可以在pom文件使用多个execution标签支持多数据库,但是需要注意每个execution一定要定义id标签

复制代码
    <plugin>
        <groupId>org.liquibasegroupId>
        <artifactId>liquibase-pluginartifactId>
        <version>1.9.5.0version>
        <executions>
            <execution>
                <phase>process-resourcesphase>
                <configuration>
                    <changeLogFile>src/main/resources/db.changelog.xmlchangeLogFile>
                    <driver>com.mysql.jdbc.Driverdriver>
                    <url>jdbc:mysql://localhost:3306/charmurl>  
                    <username>***username>
                    <password>***password>
                configuration>
                <goals>
                    <goal>updategoal>
                goals>
            execution>
            <execution>
                <phase>process-resourcesphase>
                <configuration>
                    <changeLogFile>src/main/resources/db.changelog.xmlchangeLogFile>
                    <driver>com.mysql.jdbc.Driverdriver>
                    <url>jdbc:mysql://localhost:3306/charm2url>  
                    <username>***username>
                    <password>***password>
                configuration>
                <goals>
                    <goal>updategoal>
                goals>
            execution>
        executions>
    plugin>



具体配置在下面这篇博客讲解的比较清楚,可惜不适合初学者,故整理此篇博客。
https://www.cnblogs.com/gao241/archive/2013/03/20/2971526.html
官网:
http://www.liquibase.org/

你可能感兴趣的:(LiquiBase 进行数据库持续更新)