当前位置:  开发笔记 > 后端 > 正文

我们可以使用flyway在多个数据库上并行部署sql代码

如何解决《我们可以使用flyway在多个数据库上并行部署sql代码》经验,为你挑选了1个好方法。

我有包含多个数据库的服务器,现在我需要并行地在所有数据库上部署代码,是否有可能在flyway中实现这一点,因为对于每个数据库,我需要有单独的配置文件.所以我想知道如何以这种方式实现所有配置将并行触发.

问候,Adarsh



1> 小智..:

为什么每个数据库都需要一个单独的配置文件?您可以使用此处记录的各种Flyway命令开关覆盖配置文件中的大部分/全部数据:

http://flywaydb.org/documentation/commandline/migrate.html

例如,您可以使用-URL开关覆盖配置文件中的JDBC连接字符串.这允许您拥有单个配置文件,但可以针对不同的目标数据库运行升级.

通常最好使用这些开关,因为它避免了代码的重复.(您不需要维护这么多配置文件.)这也意味着您可以避免将密码等内容放入源代码中.

下一步是创建一个脚本,针对每个目标数据库运行flyway migrate.例如,您可以编写一个执行以下操作的脚本:

flyway migrate -url:jdbc:mysql://:/
flyway migrate -url:jdbc:mysql://:/
flyway migrate -url:jdbc:mysql://:/
flyway migrate -url:jdbc:mysql://:/

现在,当您运行此脚本时,将按顺序更新每个数据库.

或者,如果您需要并行运行而不是按顺序运行更新,则需要找到一种方法来安排每条线路同时运行.实现这一目标的一种方法是使用Octopus Deploy等自动化工具来协调部署.

如果您想使用Octopus Deploy,您可能会发现此步骤模板很有用.此步骤模板还包括"漂移检查"功能,以确保您的数据库同步:

Flyway迁移Octopus Deploy的步骤模板

如果您打算使用任何其他工具,你会发现这个PowerShell脚本有用的(从上面的链接复制),其中$locationsPath,$targetUrl,$targetUser$targetPassword都是变量.

# Executing deployment
Write-Host "*******************************************"
Write-Host "Executing deployment:"
Write-Host " - - - - - - - - - - - - - - - - - - - - -"
    $arguments = @(
        "migrate"
        "-locations=filesystem:$locationsPath",
        "-url=$targetUrl",
        "-user=$targetUser",
        "-password=$targetPassword"
    )
Write-Host "Executing the following command: & $flywayCmd $arguments"

& $flywayCmd $arguments

问候,亚历克斯

(公开披露:我是Redgate Software的售前工程师.我编写了上面提到的步骤模板,并与团队合作构建了FlySQL,这是一个帮助MySQL Flyway用户更有效地构建项目的工具.)

推荐阅读
依然-狠幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有