1.Liquibase 是什么

粘一段官方的解释

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

说白了,就是一个将你的数据库脚本转化为xml格式保存起来。

其中包含了你对数据库的改变,以及数据库的版本信息,方便数据的升级和回滚等操作。

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

2.为什么需要Liquibase

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

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

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

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

这也是程序的奥义,简化繁琐的操作

3.配置Liquibase环境

3.1.下载Liquibase

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

3.2.配置环境变量

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

以 Mac 为例,文件夹路径为:/Users/jiaotd/liquibase-4.0.0-beta1

修改 ~/.bash_profile 文件,添加如下配置

export LIQUIBASE_HOME=/Users/jiaotd/liquibase-4.0.0-beta1
export PATH=$PATH:$LIQUIBASE_HOME

执行 source ~/.bash_profile 加载环境变量

执行 liquibase --version 检查时候配置成功

4.Liquibase支持的集成方式

Liquibase 支持集成的方式有多种

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

Maven 与 Spring Boot 类似,这里先介绍一下 Command 模式,Maven 与 Spring Boot 集成在以后的文章中再做详细介绍。

5.核心文件

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

空的 changelog.xml 内容如下:

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

Liquibase 将每一步的数据库操作定义为一个 changeSet,格式如下:

<changeSet id="test-1" author="jiaotd"><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 文件, 标签则是回滚时想要执行的操作。

6.核心表

Liquibase 本身拥有一个记录当前已操作的行为记录表:DATABASECHANGELOG

ID与AUTHOR 与 里一一对应

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

DATEEXECUTED:执行时间

ORDEREXECUTED:执行次序

EXECTYPE:执行状态

MD5SUM:SQL 文件的MD5 校验,请记得这个,后期将注意事项是会说到

TAG:版本号

LABELS:标签

7.Command

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

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

7.1.update

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

--classpath:数据库驱动路径

--changeLogFile :就是5中定义的 changelog.xml 文件路径,名称可以自定义,这里叫master.xml

执行这样的命令就可以将你定义的数据库操作同步到你想要同步的环境中

7.2.rollback

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

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

举个栗子,当前已执行的

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

本章简单介绍了一下 Liquibase 的使用,下章详细介绍 Command 的具体实践。


Liquibase 系列文章:

2.changelog 详解:

九人稚:数据库版本管理之Liquibase:2.changelog 详解​zhuanlan.zhihu.com

3. changeSet 变更集详解:

九人稚:Liquibase 数据库版本管理工具:3. changeSet 变更集详解​zhuanlan.zhihu.com

sqlite管理工具_Liquibase 数据库版本管理工具:1.安装相关推荐

  1. numeric比较大小 数据库_Liquibase 数据库版本管理工具:3. changeSet 变更集详解

    上篇文章中详细了介绍了一下changelog 文件的使用,本篇文章将详细说一下 changeSet 变更集 中的细节,以及通常的使用方式 1.变更集分类 changeSet 分为 6类: add cr ...

  2. 数据库版本管理工具Flyway应用

    2019独角兽企业重金招聘Python工程师标准>>> Flyway介绍 Flyway是一款开源的数据库版本管理工具,它更倾向于规约优于配置的方式.Flyway可以独立于应用实现管理 ...

  3. 数据库版本管理工具 -- Flyway

    目录 一.Flyway简介 二.如何使用Flyway 三.核心概念 1.Migration 2.每个migration支持两种编写方式: (1)java (2)sql (3)所有的migration都 ...

  4. 研发效能系列----开源的数据库版本管理工具Flyway

    1. 简介 网址:https://flywaydb.org/ Flyway是一款开源的数据库版本管理工具,Flyway可以独立于应用实现管理并跟踪数据库的变更,Flyway根据自己的约定,不需要复杂的 ...

  5. 【SQL管理】-Flyway数据库版本管理利器从入门到入味

    Flyway是什么? Flyway是独立于数据库的应用.管理并跟踪数据库变更的数据库版本管理工具.用通俗的讲,Flyway可以像Git管理不同人的代码那样,管理不同人的sql脚本,整个过程自动化,可回 ...

  6. flyway版本号_数据库版本管理工具-flyway

    flyway产生背景 在日常开发中,经常遇到数据库变更,字段增减调整,需要维护多个不同数据库时是十分痛苦的事情.代码可以使用svn,git等工具进行管理,那么数据库的版本可以使用Flyway 一款小工 ...

  7. 数据库版本管理工具-flyway

    写在前面 在日常开发中,经常遇到数据库变更,字段增减调整,需要维护多个不同数据库时是十分痛苦的事情.代码可以使用svn,git等工具进行管理,那么数据库的版本可以使用Flyway 一款小工具,就可以大 ...

  8. mysql数据库查询工具''_数据库查询工具

    多肉数据查询系统是一款非常实用的查询多肉植物小工具,软件提供了多肉植物的习性.照片.如何培养等等功能,对于喜欢在家里养些花花草草的用户会有很大的帮助,操作也很简单,基本一看就会.接下来非凡软件站小编就 ...

  9. oracle 表建模工具,Oracle数据库建模工具(ModelRight for Oracle)下载 V4.0 官方版 - 比克尔下载...

    ModelRight for Oracle是一款Oracle数据库建工具,有了它你就不用在敲那么多的命令了,只需要点几下鼠标就可以创建出一个数据库模型,然后根据模型来制作数据库,不仅简单,也不容易出错 ...

最新文章

  1. java MD5加密
  2. elasticsearch运维实战之2 - 系统性能调优
  3. HTML5本地存储不完全指南
  4. 二、操作系统——用信号量机制实现进程互斥、同步、前驱关系(详解)
  5. hybird之web动态换肤实现
  6. 使用html和css的一些经验
  7. 互联网光环下的新金融群像:运营最重要的是说人话
  8. REST服务和RESTful API是什么
  9. 机器学习-入门杂谈(转载)
  10. 电脑在桌面点击鼠标右键反应慢
  11. 在Mac上运行.exe文件
  12. Entity and Evidence Guided Relation Extraction for DocRED
  13. 打造Android不死进程
  14. c语言程序运行一会死机,为什么函数执行完了,还能导致系统死机?
  15. key组合按键,长短按键,连续按键 识别方案
  16. 我们造出了打破次元壁的锤子,然后呢?
  17. 今日新出 CV 论文汇总(含医学图像、目标检测、唇语识别、SLAM等)
  18. 工程技术x计算机科学,TOP期刊Transactions on Industrial Electronics(TIE),投稿流程介绍
  19. 104、二氧化碳气体灭火系统的灭火机理
  20. Vue移动端----页面旋转进入特效功能实现

热门文章

  1. 又双叒叕 - 中国汉字的奇妙
  2. mac instantclient_12_2 安装配置
  3. 自动打包_全自动打包机行业发展如何?全自动打包机行业发展现状分析
  4. select * from ( union ) ')' 附近有语法错误。
  5. input=file 浏览时只显示指定excel文件,筛选特定文件类型
  6. java解析json数组对象_JAVA中快速解析JSON对象里包含的JSON数组
  7. 基于tutk方案的p2p源码_以太坊源码分析--p2p节点发现
  8. (JAVA)Math类
  9. [转载]抓大放小,要事为先
  10. PHP中路径怎么用?