grails:如何在远程生产数据库

时间:2015-07-24 11:28:37

标签: grails liquibase

如果您使用的是grails数据库迁移插件,则有两种方法可以通过运行来更新数据库:

$ grails [environment] dbm-update

或者将其添加到DataSource:

grails.plugin.databasemigration.reports.updateOnStart = true

但是,前者需要能够连接到目标数据库,而后者通常被认为是不可接受的生产(数据库更新通常在停机期间以受控方式与备份等单独完成)

我们的生产数据库位于客户数据中心,我们无法访问它们。我们目前给他们一个战争文件,他们放入他们的环境。

我们可以给他们完整的源代码,告诉他们安装Grails 2.5.0,告诉他们编辑DataSource.groovy指向他们的数据库,进入app目录并输入grails prod dbm-update但这是不是一个真正的选择。

还有其他方法吗?我们可以告诉他们安装liquibase,但不支持groovy DSL(我们可能会迁移到XML版本),只需创建liquibase文件的tar。这是唯一的选择吗?

=== update ===

我们无法使用

的主要原因
grails.plugin.databasemigration.updateOnStart = true

是因为它是全局的 - 它不能按环境设置。我们的开发人员对SQL一无所知,并且例如在没有默认值的情况下添加列的问题(例如,它无法在grails中添加""的mysql默认约束),因此他们开发了正常使用dbCreate="update"。当需要为测试构建时,DBA / Dev主管会生成liquibase更改日志。这可以使用dbm-update应用于文本env,但这对于我们无法访问的30个左右的生产数据库不起作用。

生成updateSQL的建议并不是一个坏主意 - 我们将研究这个问题。在生产中,客户可能拥有许多不同版本的系统副本,因此我们可能需要保留每个版本的副本。

0 个答案:

没有答案