粘一段官方的解释sql
Track, version, and deploy database changes跟踪、管理和应用数据库变化shell
说白了,就是一个将你的数据库脚本转化为xml格式保存起来。数据库
其中包含了你对数据库的改变,以及数据库的版本信息,方便数据的升级和回滚等操做。bash
目前支持:MySql、Maria DB、PostgreSQL、Oracle、SQL Server、DB二、HSQL、H二、SQLite等多种主流数据库。工具
一般在项目正常推动的状况下,咱们会有:开发、测试、压测、准生产、生产等多套环境。测试
伴随着迭代发版,咱们须要不断同步多套环境的数据库信息,若是每一个环境都须要开发人员手动去修改,那么就是一场灾难。ui
由于到最后,谁也记不得在哪一个环境执行了哪一个操做,结果就是测试一直在群里@开发,报错啦!!url
所以咱们须要一个能够自动化维护各个环境数据库版本差别的工具,将人力释放出来。spa
这也是程序的奥义,简化繁琐的操做操作系统
根据本身的操做系统下载对应的二进制包,下载地址:https://www.liquibase.org/dow...
配置方式同 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 检查时候配置成功
Liquibase 支持集成的方式有多种
Maven 与 Spring Boot 相似,这里先介绍一下 Command 模式,Maven 与 Spring Boot 集成在之后的文章中再作详细介绍。
无论哪一种集成方式,Liquibase 最为核心的文件就是 changeSet.xml,它记录了你对数据库的每一步操做,Liquibase 因此的操做都依赖于 changeSet.xml 文件的内容。
空的 changeSet.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="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 命令,能够经过 <sqlFile> 引入外置的 SQL 文件,<rollback> 标签则是回滚时想要执行的操做。
Liquibase 自己拥有一个记录当前已操做的行为记录表:DATABASECHANGELOG
ID与AUTHOR 与 <changeSet> 里一一对应
FILENAME:当前执行的 changeSet.xml 是哪个
DATEEXECUTED:执行时间
ORDEREXECUTED:执行次序
EXECTYPE:执行状态
MD5SUM:SQL 文件的MD5 校验,请记得这个,后期将注意事项是会说到
TAG:版本号
LABELS:标签
Liquibase 命令行由参数+指令构成,经过 liquibase --help 能够查看具体指令、参数及做用注释,这里截取一部分展现
一般状况下,咱们对数据库最经常使用的操做就是升级
与回滚
,对应 Liquibase 的指令就是update
与 rollback系列
liquibase \ --driver=$liquibase_driver \ --url=$MYSQL_DB_URL \ --username=$DB_USER \ --password=$PASSWORD \ --classpath=$liquibase_classpath \ --changeLogFile=文件路径/master.xml \ update
--classpath:数据库驱动路径
--changeLogFile :就是5中定义的 changeSet.xml 文件路径,名称能够自定义,这里叫master.xml
执行这样的命令就能够将你定义的数据库操做同步到你想要同步的环境中
rollback 操做经常使用的有多个,分别是rollback <tag>,rollbackToDate <date/time>, rollbackCount <value>
举个栗子,当前已执行的
本章简单介绍了一下 Liquibase 的使用,下章详细介绍 Command 的具体实践。