Liquibase操作指南

LiquiBase是一个用于数据库重构和迁移的开源工具,通过日志文件的形式记录数据库的变更,然后执行日志文件中的修改,将数据库更新或回滚到一致的状态。LiquiBase的主要特点有:
支持几乎所有主流的数据库,如MySQL, PostgreSQL, Oracle, Sql Server, DB2等;
支持多开发者的协作维护;
日志文件支持多种格式,如XML, YAML, JSON, SQL等;
支持多种运行方式,如命令行、Spring集成、Maven插件、Gradle插件等;
安装liquibase

wget https://github.com/liquibase/liquibase/releases/download/liquibase-parent-3.6.2/liquibase-3.6.2-bin.tar.gz
wget https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.47.tar.gz
tar -zxvf  liquibase-3.6.2-bin.tar.gz -C ./liquibase
tar -zxvf mysql-connector-java-5.1.47.tar.gz -C ./liquibase/lib
export PATH=./liquibase:$PATH
mkdir -p changelogpath
cat db.changelog.xml
<?xml version="1.0" encoding="UTF-8"?>
<databaseChangeLog
  xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog
         http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.1.xsd">
    <changeSet id="1" author="bob">
        <createTable tableName="department">
            <column name="id" type="int">
                <constraints primaryKey="true" nullable="false"/>
            </column>
            <column name="name" type="varchar(50)">
                <constraints nullable="false"/>
            </column>
            <column name="active" type="boolean" defaultValueBoolean="true"/>
        </createTable>
    </changeSet>
</databaseChangeLog>


命令行式执行:
字符集问题"jdbc:mysql://localhost/test?useUnicode=true&characterEncoding=UTF-8

./liquibase --driver=com.mysql.jdbc.Driver \
     --classpath=/root/liquibase/lib/mysql-connector-java-5.1.47.jar \
     --changeLogFile=/root/liquibase/changelogpath/db.changelog-master.xml \
     --url="jdbc:mysql://127.0.0.1:3306/test" \
     --username=root \
     --password=gj1234 \
     --contexts=QA \
     update \
     -Dschema.name=test

回滚命令:

./liquibase --changeLogFile=D:/Tool/liquibase-3.5.3-bin/Release0003.sql \
 --driver=com.mysql.jdbc.Driver \
 --classpath=/root/liquibase/lib/mysql-connector-java-5.1.47.jar \
 --url="jdbc:mysql://localhost/test?useUnicode=true&characterEncoding=UTF-8" \
 --username=test \
 --password=test \
 rollbackToDate 2018-01-11 16:52:32

会在库中产生两个表
databasechangelog:保存变更记录
databasechangeloglock:保存锁,只允许一个执行。完整解决方案:
changelog 
        db.changelog-master.xml
        db.changelog-1.0.xml
        db.changelog-1.1.xml
        db.changelog-2.0.xml
db.changelog-master.xml

<?xml version="1.0" encoding="UTF-8"?> 
<databaseChangeLog
  xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog
                      http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.1.xsd">

  <include file="com/example/db/changelog/db.changelog-1.0.xml"/> 
  <include file="com/example/db/changelog/db.changelog-1.1.xml"/> 
  <include file="com/example/db/changelog/db.changelog-2.0.xml"/> 
</databaseChangeLog> 
db.changelog-1.0.xml
<?xml version="1.0" encoding="UTF-8"?> 
<databaseChangeLog 
  xmlns="http://www.liquibase.org/xml/ns/dbchangelog/1.9" 
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog/1.9
                      http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-1.9.xsd"> 
  <changeSet author="authorName" id="changelog-1.0">
    <createTable tableName="TablesAndTables">
      <column name="COLUMN1" type="TEXT">
        <constraints nullable="true" primaryKey="false" unique="false"/>
      </column>
    </createTable>
  </changeSet>
</databaseChangeLog> 


The master.xml includes the changelog for the releases in the correct order.
The db.changelog-master.xml is the changelog you pass to all Liquibase calls.

### 回答1: Liquibase是一个数据库版本控制工具,可以用来管理数据库变更。下面是Liquibase的简单使用步骤: 1. 创建一个Liquibase项目,可以使用Maven或Gradle等构建工具来创建。 2. 配置Liquibase,包括数据库连接信息、变更日志文件路径等。 3. 创建变更集,可以使用XML、YAML或JSON等格式来定义。 4. 运行Liquibase命令来执行变更集,例如执行更新命令: ``` liquibase update ``` 5. 查看数据库变更记录,可以使用命令: ``` liquibase history ``` 6. 回滚数据库变更,可以使用命令: ``` liquibase rollback <tag> ``` 其中,<tag>是变更集的标签,用于指定回滚到哪个点。 以上是Liquibase的简单使用步骤,更多详细信息请参考官方文档。 ### 回答2: Liquibase是一个开源的数据库版本控制工具,可以帮助开发人员管理数据库的演变过程。它使用XML、YAML或JSON格式的脚本文件来定义数据库结构和数据的变更,从而使数据库的追踪和同步变得更加容易。 Liquibase的简单使用可以分为以下几个步骤: 1. 引入Liquibase依赖:在项目的构建配置文件中添加Liquibase的依赖项,例如在Maven项目中,在pom.xml文件中添加Liquibase相关的依赖。 2. 创建Liquibase配置文件:在项目的根目录下创建一个名为liquibase.properties的文件,并配置数据库连接信息,如数据库驱动、URL、用户名和密码等。 3. 编写变更脚本:创建一个名为changelog.xml的文件,用于定义数据库的结构和数据的变更。可以使用Liquibase提供的各种标签和属性来描述添加表、字段、索引、约束、存储过程等操作。 4. 执行变更脚本:使用Liquibase命令行工具或API来执行变更脚本。命令行方式可以通过运行liquibase update命令来应用所有未应用的变更,API方式可以在应用程序启动时通过编程方式来初始化和执行变更脚本。 5. 查看数据库状态:可以使用Liquibase的status命令来查看数据库中已应用和未应用的变更,以及当前数据库的状态信息。 通过上述步骤,我们可以很容易地使用Liquibase来管理数据库的变更。它不仅可以帮助我们追踪数据库结构和数据的变化历史,还能够自动处理数据库的升级和回滚,大大简化了数据库的管理工作,提高了开发人员的工作效率。 ### 回答3: Liquibase是一个流行的开源数据库重构工具,可以帮助开发人员对数据库进行版本控制和管理。 使用Liquibase进行数据库重构的步骤如下: 1. 首先,需要在项目中引入Liquibase的库文件。可以通过将Liquibase的依赖添加到项目的构建文件(如pom.xml)中,或者手动下载并添加到项目中。 2. 然后,在项目的资源文件夹中创建一个Liquibase配置文件(如liquibase.properties、liquibase.yml或liquibase.xml)。配置文件中包含了数据库连接信息、变更集文件路径等配置项。 3. 创建一个变更集文件(如changelog.xml),用于存储数据库的变更历史。可以通过添加与数据库相关的标签(如创建表、修改表结构、插入数据等)来定义具体的变更操作。 4. 运行Liquibase命令行工具或使用代码方式启动Liquibase,执行变更集文件中的变更操作Liquibase会根据变更集文件中定义的变更操作,自动检测数据库的当前状态,并将其与变更集文件中的期望状态进行比对,然后执行必要的变更操作以使数据库达到期望状态。 5. 可以使用Liquibase提供的其他功能,如回滚变更、生成数据库文档等。 总结来说,Liquibase简单使用的步骤包括引入Liquibase库文件、创建配置文件、定义变更集文件,然后通过运行Liquibase命令行工具或使用代码方式执行变更操作Liquibase可以帮助开发人员在多人协作或持续集成环境中轻松管理和控制数据库的变更。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值