liquibase 数据库从头开始构建

liquibase database build from scratch

当我 运行 从头开始​​更新 liquibase 时,需要一段时间,因为该过程会一个接一个地触发每个变更日志。有时我自己的数据库更改差异很大,例如,如果我想重新开始,最容易重建数据库。

如果我在变更日志中的某个点从 liquibase 结果的 mysql 转储中进行重建,那么重建将是最快的,而我之前忽略了那里的变更日志。所以我会删除 changelog master 中的所有内容,除了我的 master 构建转储 changelog,这将是整个数据库,出于版本控制的原因,我保留了实际的 changelogs。

是否有 proper/ordained/safe 从 liquibase 执行此操作的方法?

遗憾的是,"restart" 更新日志文件没有标准方法,因为您的环境和设置会极大地影响最适合您的方式。

通常最简单的方法是不完全重新启动更改日志文件,而是对其进行修改。数据库在 DDL 方面通常很快,尤其是在空数据库上,而且通常情况下,使干净的数据库重建的是一小部分变更集。重新定义索引通常是问题的重要组成部分,但其他事情也可能如此。观察哪些 changeSets 占用了日志时间,也许您会发现一些相互抵消的或者现在不需要但仍然占用大部分时间的。

如果从头开始最适合您,则该过程与开始在现有项目上使用 Liquibase 基本相同。请参阅 http://www.liquibase.org/documentation/existing_project.html 上的文档,了解有关此选项的想法。

对于 mysql,一个选项可能是使用 mysqldump,然后使用 <execute> 调用 mysql 恢复 shell 命令的单个 changeSet .

至于您现有的数据库变更日志行,Liquibase 使用该路径作为变更集标识符的一部分,因此如果您的新变更日志文件具有不同的名称或路径,Liquibase 已经将变更集视为新的。或者,您可以使用执行 delete from databasechangelog

<changeSet> 开始新的更新日志文件