Liquibase:跟踪更改日志

项目

我们是〜50个开发人员以及DevOps员工,并运行着约30个Oracle 12c EE实例。我们在2018年推出了Liquibase。

我们使用的Liquibase Maven插件版本为3.8.8,更改日志存储在许多Maven项目中,它们被提交到通常的trunk / tag / branch结构中进行颠覆。

目标

我们希望简化新数据库实例的配置,使其具有与各个环境匹配的发行版。一个典型的用例是在集成测试环境中建立一个新的数据库。

一个将以一个空的数据库模式开始并将变更日志应用到特定版本。 不幸的是,应用于模式的变更日志通常存储在不同的Maven项目中。这使他们很难找到。

Liquibase不会在DATABASECHANGELOG表中存储实际的变更集内容(具体的DDL)。这样可以解决问题。

在寻找解决方案时,我首先使用maven在执行liquibase:update时将变更日志的SVN修订版本存储到DATABASECHANGELOG中。 基于修订号检索变更日志容易出错。

我现在已经花了一个星期的时间来找到一个可靠的解决方案,用了几个小时的时间在Google上搜索,并构建了几个测试用例(带有经过修改的父级和具体pom,部分使用了maven scm插件等),但是没有运气。最初,我计划使用liquibase:tag来存储文件路径+修订版,但这仅在所有变更集都在一个变更日志文件中的情况下才有效,

当然,最好将所有变更日志存储在一个位置, 但这并不总是可能的。例如,必须将具有DBA特权的脚本提交给其他Maven项目。 我需要在每个变更集和相应的变更日志文件之间建立强有力的引用,否则变更日志必须直接存储在DATABASECHANGELOG中。

在我们当前的设置中,无法使用Liquibase进行“数据库版本控制”。有理论 可追溯性,但是要由用户以某种方式在100多个单独的Maven项目中找到原始变更日志。

问题1:是否可以将每个变更集的实际变更日志内容存储到DATABASECHANGELOG中?

问题2:如果不是,如何保存DATABASECHANGELOG条目和原始变更日志文件之间的引用?

(此外,当意外将变更日志文件从Subversion删除时,会发生什么情况?DATABASECHANGELOG只会告诉我变更的日期和时间,一些详细信息以及文件名-非常无用,因为 actual 文件将消失,并且无法恢复实际的DDL。为防止这种情况,我将备份 all 个changelog文件。为此,{{ 1}}元数据不足,因为Liquibase无法跟踪SVN版本和文件路径。)

LLY941020 回答:Liquibase:跟踪更改日志

一种选择是使用SVN外部组件将各种SVN存储库组合到新的存储库中,然后创建新的变更日志文件。
您可以将URL(SVN标记/分支/修订)映射到文件夹,而无需使用SVN外部组件进行复制。 http://svnbook.red-bean.com/en/1.7/svn.advanced.externals.html

希望有帮助。

本文链接:https://www.f2er.com/2444960.html

大家都在问