美文网首页程序员读书
数据库迁移工具之Liquibase

数据库迁移工具之Liquibase

作者: 陈菲TW | 来源:发表于2019-03-27 19:12 被阅读6次

这片文章用于梳理项目中用到的Liquibase。

Liquibase是一种数据库迁移工具(Database migration tool),官网上对它的描述是“source control of database”,即数据库的版本管理工具。常用的数据库迁移工具还有flyway,会在后续文章中总结。Liquibase支持各种主流数据库,如Mysql,PostgreSQL,DB2,Oracle,SQL server,H2,Hsql等。

如何在Spring Boot项目中使用Liquibase?

Step1. 在项目中引入Liquibase依赖。如下图build.gradle中声明liquibase-core依赖。

Step 2. 把changelog放在/db/changelog/db.changelog-master.yaml。/db/changelog/db.changelog-master.yaml是Spring Boot查找changelog的默认路径,Spring Boot启动时,会自动运行liquibase进行数据库迁移。同时也可以通过配置属性liquibase.change-log=<path/changelogFile>来自定义change log路径。

Liquibase的核心就是用changeLog文件来记录跟踪数据库更新。Liquibase支持的changeLog格式包括:XML,JSON,YAML和SQL。这里我们以XML为例,如下图所示,changeLog用‘databaseChangeLog’标签表示,可以包含多个changeSet.

Step 3. 定义changeSet。ID和Auther必填,其中ID可以是数字也可以是表义的字符串;其他信息包括Context,PreConditions,Sql和Rollback语句。上图中的change set用于创建Factory数据表。

Liquibase运行时会顺序读取change log中定义的change set,并基于change set的ID,author和change log文件路径查看该change set是否已经存在于“databasechangelog”数据表,存在代表已经执行过,则跳过该change set(除非runAlways置为true)。change set执行完成后,会基于ID,author和change log文件路径生成MD5值存储到“databasechangelog”数据表,用于防止change set在被执行后发生修改。如果change set在执行后被修改,那么Liquibase运行时会报错并停止数据库更新,以避免出现数据库状态与change log期待状态的不一致。

Liquibase最佳实践

1. 使用major release来组织change log。如db.changelog-1.0.xml;db.changelog-1.1.xml;db.changelog-2.0.xml。

2. 使用Master change log引用各个major release change log,引用顺序即为release顺序。如下图所示。

3. 每个change set仅包含单个数据库修改。因为liquibase把一个change set作为一个事务;而某些数据库支持statement自动提交,因此通常做法是一个change set仅包含一个数据库修改。

Liquibase的其他功能

1. 支持生成数据库更新文档,如下图所示,包括当前数据表结构,历次change log等信息。

2. 类似VCS的diff功能,Liquibase提供diff命令查看数据库的修改,尽管开发过程中每次修改都有change log,但是diff命令可以帮助我们比如在上线之前查看并确认数据库的修改。

3. 提供SQL Output模式。项目中有时并不希望Liquibase自动完成数据库更新,比如我们需要DBA审批等,那么Liquibase的SQL Output模式可以仅生成用于更新和回滚的SQL语句,而不会进行真正的更新。

相关文章

  • Flyway

    和Liquibase一样,Flyway也是一种开源的数据库迁移工具。Liquibase的文章在这里:https:/...

  • 数据库迁移工具之Liquibase

    这片文章用于梳理项目中用到的Liquibase。 Liquibase是一种数据库迁移工具(Database mig...

  • 数据库迁移工具-Liquibase使用

    介绍 Liquibase是一个用于数据库重构和迁移的开源工具,通过日志文件的形式记录数据库的变更,然后执行日志文件...

  • 1. liquibase介绍

    什么是liquibase liquibase是一个数据库变更的版本控制工具。项目中通过liquibase解析用户编...

  • SpringBoot 整合 liquibase

    LiquiBase是一个用于数据库重构和迁移的开源工具,通过日志文件的形式记录数据库的变更,然后执行日志文件中的修...

  • 2019-04-27

    Yeoman安装 使用模块 使用LiquiBase管理数据库的迁移 Validation Failed diff命...

  • 4. xml配置文件自动生成

    开始使用liquibase的时候,有的项目中已经有了数据库表,有的项目是从中间迁移到liquibasebase。这...

  • 从零开始学SpringBoot之数据库迁移:概述

    前言: 在这里的数据库迁移主要是对数据库结构版本管理和迁移。 一、为什么需要数据库迁移工具? 那在没有使用迁移工具...

  • jhipster liquibase从数据库生成changlog

    1.修改liquibase数据库连接信息 在项目pom.xml文件夹中,找到liquibase插件,并修改数据库连...

  • Liquibase 简单应用

    1.概述 Liquibase 是一个用于跟踪,管理和应用数据库变化的开源的数据库重构工具。它将所有数据库的变化(包...

网友评论

    本文标题:数据库迁移工具之Liquibase

    本文链接:https://www.haomeiwen.com/subject/ulstbqtx.html