【问题标题】:Liquibase scenario, initial usageLiquibase 场景,初始使用
【发布时间】:2014-04-28 02:17:10
【问题描述】:

我有一个现有的生产数据库和一个具有一些架构差异的开发数据库。以前都没有使用过 Liquibase。我怎样才能实现以下目标:

  1. 计算生产和开发之间的差异。
  2. 将增量应用于生产,
  3. 最终得到 Liquibase 控制下的生产(和开发)模式。

【问题讨论】:

标签: database-migration liquibase


【解决方案1】:

您将首先使用 generateChangelog 命令为开发数据库生成更改日志,记录在此:http://www.liquibase.org/documentation/generating_changelogs.html

当您生成变更日志时,Liquibase 还将创建并初始化两个数据库表(DATABASECHANGELOG 和 DATABASECHANGELOGLOCK),用于跟踪哪些变更集已应用于数据库。

接下来,您要区分两个数据库,并让 liquibase 使用 diffChangelog 命令将差异生成为单独的更改日志: http://www.liquibase.org/documentation/diff.html

差异变更日志可以按原样包含,也可以复制到现有的变更日志中。如果 diff 命令传递一个现有的更改日志文件,则新的更改集将附加到文件的末尾。

最后,您将更改日志部署到生产环境。

【讨论】:

  • 谢谢,我已经采纳了你的建议,但是将变更日志部署到 prod 似乎并没有做出任何改变,所以我认为我在某个地方做错了什么.我不认为您可以在答案中添加一些示例命令,以便确保我走在正确的轨道上?
  • 这是我迄今为止所做的:gist.github.com/anonymous/9688574 不过,生成的生产变更日志没有多大意义。
【解决方案2】:

这是我最终得到的结果($LIQUIBASE 扩展为为我正在使用的特定数据库配置的 Liquibase 命令行工具)。

根据生产数据库的当前状态生成基线变更日志:

$LIQUIBASE --url=$PROD_URL --changeLogFile=changeLog.xml generateChangeLog

将生产记录为与更改日志同步:

$LIQUIBASE --url=$PROD_URL --changeLogFile=changeLog.xml changeLogSync

计算开发和生产之间的差异,并将它们附加到更改日志文件中:

$LIQUIBASE --url=$PROD_URL --referenceUrl=$DEV_URL --changeLogFile=changeLog.xml diffChangeLog

使生产与开发同步:

$LIQUIBASE --url=$PROD_URL --changeLogFile=changeLog.xml update

将开发记录为与更改日志同步:

$LIQUIBASE --url=$DEV_URL --changeLogFile=changeLog.xml changeLogSync

【讨论】:

    【解决方案3】:

    本教程的 5.3 部分回答了我猜的您的问题。

    http://www.baeldung.com/liquibase-refactor-schema-of-java-app

    这在 java 中使用了 maven,但我认为普通的 liquibase 命令也可以做到。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-02-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-19
      • 1970-01-01
      • 2021-08-16
      • 1970-01-01
      相关资源
      最近更新 更多