Administrator
发布于 2021-01-19 / 2861 阅读 / 0 评论 / 0 点赞

Liquibase介绍和安装

Liquibase介绍和安装

一、前言

1.Liquibase 是什么

  • 官方原话:

Track, version, and deploy database changes
跟踪、管理和应用数据库变化

  • 其实就是一个将你的数据库脚本转化为xml格式保存起来。其中包含了你对数据库的改变,以及数据库的版本信息,方便数据的升级和回滚等操作。

  • 目前支持:MySql、Maria DB、PostgreSQL、Oracle、SQL Server、DB2、HSQL、H2、SQLite等多种主流数据库。

2、为什么要使用Liquibase

通常在项目正常推进的情况下,我们会有:开发、测试、压测、准生产、生产等多套环境。

伴随着迭代发版,我们需要不断同步多套环境的数据库信息,如果每个环境都需要开发人员手动去修改,那么就是一场灾难。

因为到最后,谁也记不得在哪个环境执行了哪个操作,结果就是测试一直在群里@开发,报错啦!!

因此我们需要一个可以自动化维护各个环境数据库版本差异的工具,将人力释放出来。

二、安装和简单使用

1、安装

根据自己的操作系统下载对应的二进制包,下载地址:https://www.liquibase.org/download

  • 点开你会看到这个框框,必须要输入邮箱,很难受,我就不呢

image-20210117165431306

  • 可以右击检查,打开控制台,找到这个表单的标签,删了就好

image-20210117165637406

image-20210117165738776

  • 这样就可以了,好了,我们继续,下载对应版本的安装文件或者zip即可

image-20210117165857545

1.2.配置环境变量

配置方式同 Java ,将压缩文件解压,配置文件夹路径到PATH路径中。

  • Windows的方式:

创建环境变量 LIQUIBASE_HOME = D:\xxxxx

image-20210117170726098

然后PATH 加入即可 %LIQUIBASE_HOME%

2、Liquibase支持的集成方式

Liquibase 支持集成的方式有多种

  • Command 命令行模式
  • Maven
  • Ant
  • Spring Boot

3、核心文件

不管哪种集成方式,Liquibase 最为核心的文件就是 changelog.xml,它记录了你对数据库的每一步操作,Liquibase 所以的操作都依赖于 changelog.xml 文件的内容。

  • 空的 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.4.xsd">

</databaseChangeLog>
  • Liquibase 将每一步的数据库操作定义为一个 changeSet,格式如下:
<changeSet id="test-1" author="xxx">
    <sql>create table xxx(id int(11));</sql>
    <sqlFile path="xxx.sql"/>
    <rollback>
        <sql>drop table xxx;</sql>
        <sqlFile path="xxx-rollback.sql"/>
    </rollback>
</changeSet>

<changeSet> 中,你可以直接使用<sql>标签写 SQL 命令,可以通过<sqlFile>引入外置的 SQL 文件,<rollback>标签则是回滚时想要执行的操作。

4、核心表

Liquibase 本身拥有一个记录当前已操作的行为记录表:DATABASECHANGELOG,(如果操作的数据库没有这张表,就自动创建)

image-20210117171350233

ID与AUTHOR 与 <changeSet id="test-1" author="xxx">一一对应

FILENAME:当前执行的 changeSet.xml 是哪一个

DATEEXECUTED:执行时间

ORDEREXECUTED:执行次序

EXECTYPE:执行状态

MD5SUM:SQL 文件的MD5 校验,请记得这个,这个很重要

TAG:版本号

LABELS:标签

5、Command

Liquibase 命令行由参数+指令构成,通过 liquibase --help 可以查看具体指令、参数及作用注释,这里截取一部分展示

image-20210117172303686

  • 通常情况下,我们对数据库最常用的操作就是升级回滚,对应 Liquibase 的指令就是updaterollback系列

5.1.update

liquibase 
  --driver=$liquibase_driver 
  --url=$MYSQL_DB_URL 
  --username=$DB_USER 
  --password=$PASSWORD 
  --classpath=$liquibase_classpath 
  --changeLogFile=文件路径/master.xml 
  update

5.2.rollback

rollback 操作常用的有多个,分别是rollback ,rollbackToDate , rollbackCount

  • rollback :将数据库回退到指定的 tag 版本状态,tag 是对已操作的 changSet 版本记录,类似于 Git 的 tag,通过 liquibase tag 完成;
  • rollbackToDate :将数据库回退到指定的 date、 time 时间状态
  • rollbackCount :回退指定数量的 changSet ,每个 记为1;

image-20210117172527801

  • 执行 rollback v1.01 ,则序号8~14的操作会回滚,数据是执行了1~7操作的状态
  • 执行 rollbackToDate 2020-07-05,则时间是2020-07-05 之后的操作全部回滚
  • 执行 rollbackCount 5,则从后向前数 5 个操作,10~14 将会回滚,数据是执行了1~9操作的状态

评论