当我从头开始运行liquibase更新时,需要一段时间,因为该过程会逐个触发每个更改日志。有时我自己的数据库变化很大,如果我想重新开始,最容易重建数据库。
如果我在更改日志中的某个点从liquibase的结果的mysql转储中执行重建,那么重建将是最快的,并且我忽略了之前的更改日志。所以我会删除changelog master中的所有内容,除了我的主构建转储更改日志,它将是整个数据库,并且由于版本控制的原因,我会保留实际的更改日志。
是否有适当/规定/安全的方法从liquibase执行此操作?
答案 0 :(得分:1)
不幸的是,没有标准的方法来重启"更改日志文件,因为您的环境和设置会极大地影响最适合您的方式。
通常,最简单的方法是不完全重新启动changelog文件,而是对其进行修改。数据库通常在DDL上很快,特别是在空数据库上,因此通常使干净的数据库重建成为changeSets的一小部分。重新定义索引通常是问题的重要部分,但其他事情也可以。观察更改设置需要一个日志时间,也许您可以找到一些相互取消或现在不需要但仍占用大部分时间的内容。
如果它最适合您从头开始,那么该过程与在现有项目中开始使用Liquibase基本相同。有关此选项的选项,请参阅http://www.liquibase.org/documentation/existing_project.html上的文档。
使用mysql,一个选项可能是使用mysqldump,然后使用<execute>
使用一个changeSet来调用mysql restore shell命令。
对于现有的databasechangelog行,Liquibase将路径用作changeSet标识符的一部分,因此如果您的新changelog文件具有不同的名称或路径,Liquibase将已将changeSets视为新的。或者,您可以使用执行<changeSet>
delete from databasechangelog
启动新的更改日志文件