阅读时间: 2 分钟
什么是Liquibase?
首先,Liquibase是一个开源的数据库模式变更管理解决方案,它使你能够轻松地管理你的数据库变更的修订。
我们可以在哪里使用Liquibase?
- 数据库模式变更的CD
- 模式变更的版本控制
- 将数据库和应用程序的变更一起部署,使它们始终保持同步。
Liquibase的概念
变更日志
-
它包含了需要在数据库中进行的顺序性修改。
-
Changelogs支持fomats。 sql、xml、json、yaml
-
常用的可用属性
-
前提条件
- 用来检查数据的真实性。
-
变更集
- 这是一个需要通过Liquibase在DataBase中执行的变更。
-
包括
- 含有改变集的附加文件,包括在主变更日志中。
-
例子
--liquibase formatted sql
--changeset author_name:id1
create table example (
id int primary key,
name varchar(255)
);
--rollback drop table example;
--changeset author_nmae:id2
insert into example (id, name) values (1, ‘name 1′);
insert into example (id, name) values (2, ‘name 2′);
追踪表
总的来说,Liquibase 创建并使用两个表来跟踪 changelogfile 中的更改集,并使用锁来防止一次进行多次更新。
数据库变更日志
此外,它被用来比较和部署 changelog 文件中的变更集。
对于表中的属性列表。
docs.liquibase.com/concepts/tr…
数据库变更日志锁
它可以防止Liquibase的多个实例同时更新数据库。
对于表中的属性列表。
docs.liquibase.com/concepts/tr…
数据库连接
另外,Liquibase同时支持SQL和NoSQL数据库
关于支持的数据库的列表。
https://docs.liquibase.com/install/supported-databases.html
Liquibase命令
更新。
更新命令将 Changelog 中定义的 SQL 更改更新到现有数据库中。
欲了解更多信息。
docs.liquibase.com/change-type…
例子。
变更日志文件内容
-- changeset liquibaseuser:1
UPDATE liquibase.person SET address = 'address value' WHERE name='Bob';
liquibase --changeLogFile "<filePath>" --url <DataBaseUrl> --username "<username>" --password "<password>" update
回滚
rollback 命令会回滚根据指定标签对数据库所做的更改。
欲了解更多信息。
docs.liquibase.com/commands/ro…
例子
更改日志文件内容
-- changeset liquibaseuser:1
create table Details1 ( id int primary key, name varchar(255) );
-- rollback drop table Details1;
liquibase --changeLogFile="filePath" --url <DataBaseUrl> --username "<username>" --password "<password>" rollback <tag>
快照
snapshot 命令捕获了数据库的当前状态。
关于更多信息。
快照仅以JSON或YAML格式出现
docs.liquibase.com/commands/sn…
例子
liquibase --output-file=mySnapshot.json --url <DataBaseUrl> --username "<username>" --password "<password>" --snapshot --snapshotFormat=json
差异
Liquibase中的diff 命令允许你将相同类型或不同类型的两个数据库相互比较。
欲了解更多信息。
docs.liquibase.com/commands/di…
例子
liquibase diff
--format=json
--url="<SOURCE_DATABSE URL>"
--username=<SOURCE_DATABASE USERNAME>
--password=<SOURCE_DATABASE PASSWORD>
--referenceUrl="<REFERENCE_DATABASE URL>"
--referenceUsername=<REFERENCE_DATABASE USERNAME>
--referencePassword=<REFERENCE_DATABASE PASSWORD>
总结
Liquibase提供了丰富的cli选项和对docker镜像的支持。因此,我们创建了CI/CD管道,将数据库作为版本控制系统的代码来管理。